home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / inter52d.zip / OPCODES.LST < prev    next >
File List  |  1996-10-20  |  166KB  |  7,469 lines

  1. OPCODES LIST            Release 52        Last change 20oct96
  2.  
  3. ------------------------------------------------------------
  4. This is DOC 'bout undocument command and document command
  5. of any last processors. And 'bout some registers and
  6. Chips specific stuffs.
  7. ------------------------------------------------------------
  8.  (C) (P) Potemkin's Hackers Group 1994,1995,1996
  9. ------------------------------------------------------------
  10. Revision 1.94             11 May 1996
  11. ------------------------------------------------------------
  12. All Your messages send to ->
  13. E-mail: root@chaos.misa.ac.ru        avp@iron.misa.ac.ru
  14. AirMail:
  15.     111538 RUSSIA,    Moscow
  16.     P.O.        box 430.
  17.     Potemkin's Hackers Group (PHG)
  18. -------------------------------------------------------------
  19. I'm sorry that I never included next info into OPCODE.LST:
  20.        MMX instruction set.
  21.        Pentium Pro full MSR description.
  22.        Am5k86 AAR description.
  23.        articles of interesting architecture features.
  24. But I absolutely haven't time for it.
  25.                 Alex V. Potemkin
  26.  
  27. -------------------------------------------------------------
  28. AAA   -     ASCII adjust AX after addition
  29.  
  30.  
  31. CPU:  8086+
  32. Type of Instruction: User
  33.  
  34. Instruction:  AAA   ; (no operands)
  35.  
  36.  
  37. Description:
  38.     IF ((( AL and 0FH ) > 9 ) or (AF==1)
  39.     THEN {
  40.         IF CPU<286 THEN {  AL <- AL+6 }
  41.                ELSE {  AX <- AX+6 }
  42.         AH <- AH+1
  43.         CF <- 1
  44.         AF <- 1
  45.     } ELSE {
  46.         CF <- 0
  47.         AF <- 0
  48.     }
  49.     AL <- AL and 0Fh
  50.  
  51.  
  52. Note: This istruction incorrectly documented in Intel's materials.
  53.       See description field.
  54.  
  55. Flags Affected: AF,CF        (modified)
  56.         OF,SF,ZF,PF (undefined)
  57.  
  58. Faults:
  59.     RM    PM    V86    VME
  60.     None
  61.  
  62.  
  63. CPU mode: RM,PM,VM,SMM
  64.  
  65. +++++++++++++++++++++++
  66. Physical Form:
  67. COP (Code of Operation)     : 37H
  68.  
  69. Clocks:
  70.         AAA
  71. 8086:        4
  72. 8088:        4
  73. 80186:        8
  74. 80286:        3
  75. 80386:        4
  76. i486:        3
  77. Pentium:    3
  78.  
  79. Cx486SLC:    4
  80. Cx486DX:    4
  81. IBM 486BL3X:    4
  82. UMC U5S:    1
  83.  
  84.  
  85. ---------------------------------------------------
  86. AAD    - ASCII adjust AX before Division
  87.  
  88. CPU:  8086+
  89. Type of Instruction: User
  90.  
  91. Instruction:  AAD basen
  92.  
  93.  
  94. Description:
  95.         AL <- (AH*basen) + AL
  96.         AH <- 0
  97.  
  98.  
  99.  
  100. Flags Affected: SF,ZF,PF    (modified)
  101.         OF,AF,CF    (undefined)
  102.  
  103. Faults:
  104.     RM    PM    V86    VME    SMM
  105.     None
  106.  
  107.  
  108.  
  109. CPU mode: RM,PM,VM,SMM
  110.  
  111. Note:    AAD    without operands means AAD with operand 0AH.
  112.  
  113. Note: NECs understand only AAD 0AH form.
  114.  
  115. +++++++++++++++++++++++
  116.  
  117. Physical Form: AAD imm8
  118.  
  119. COP (Code of Operation)     : D5H    imm8
  120.  
  121. Clocks:        AAD 0AH
  122. 8086:        60
  123. 80186:        15
  124. 80286:        14
  125. 80386:        19
  126. i486:        14
  127. Pentium:    10
  128.  
  129. Cx486SLC:    4
  130. Cx486DX:    4
  131.  
  132. IBM 486BL3X:    15
  133. UMC    U5S:    11
  134.  
  135. ---------------------------------------------------
  136. AAM    - ASCII adjust AX after Multiply
  137.  
  138. CPU:  8086+
  139. Type of Instruction: User
  140.  
  141. Instruction:  AAM basen
  142.  
  143.  
  144. Description:
  145.         AH <- AL  / basen
  146.         AL <- AL MOD basen
  147.  
  148.  
  149.  
  150. Flags Affected: SF,ZF,PF    (modified)
  151.         OF,AF,CF    (undefined)
  152.  
  153. Faults:
  154.     RM    PM    V86    VME    SMM
  155.     None
  156.  
  157. CPU mode: RM,PM,VM,SMM
  158.  
  159. Note:    AAM    without operands means AAM with operand 0AH.
  160.  
  161. WARNING: NECs understand only AAM 0Ah form.
  162.  
  163. +++++++++++++++++++++++
  164.  
  165. Physical Form: AAM imm8
  166.  
  167. COP (Code of Operation)     : D4H    imm8
  168.  
  169. Clocks:        AAM 0AH
  170. 8086:        83
  171. 80186:        19
  172. 80286:        16
  173. 80386:        17
  174. i486:        15
  175. Pentium:    18
  176.  
  177. Cx486SLC:    16
  178. Cx486DX:    16
  179.  
  180. IBM 486BL3X:    17
  181. UMC    U5S:    12
  182.  
  183. ---------------------------------------------------
  184. ADD4S  -  Addition for packed BCD strings
  185.  
  186.  
  187. CPU: all NECs  V-series
  188. Type of Instruction: User
  189.  
  190. Instruction:  ADD4S
  191.  
  192.  
  193. Description:
  194.     BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  195.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  196.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  197.  
  198. Note:    si,di, other registers not changed
  199.  
  200. Flags Affected: OF,CF,ZF
  201.     ;;  ZF set if both strings are zeros.
  202.     ;;  CF,OF set as result of operation with most
  203.     ;;  signification BCDs.
  204.  
  205. CPU mode: RM
  206.  
  207. +++++++++++++++++++++++
  208. Physical Form: ADD4S
  209. COP (Code of Operation)     : 0FH 20H
  210.  
  211. Clocks:        ADD4S
  212. NEC V20:    ~19*(CL/2)+7
  213.  
  214. ---------------------------------------------------
  215. BOUND    -  Chack Array Index Against Bounds
  216.  
  217. CPU:  80186+,NECs
  218. Type of Instruction: User - HLL support
  219.  
  220. Instruction:  BOUND index,bound_array
  221.  
  222.  
  223. Description:
  224.         IF (index < (opsize ptr [bound_array]))
  225.            OR
  226.            (index > (opsize ptr [bound_array+opsize]))
  227.         THEN  INT 5;
  228.  
  229.  
  230.  
  231. Flags Affected: No Flags Affected
  232.  
  233. CPU mode: RM,PM,VM,SMM
  234.  
  235. Faults:
  236.     RM    PM    V86    VME    SMM
  237.         #GP(0)                if result is nonwritable seg.
  238.         #GP(0)                illegal memory operand
  239.                         in CS..GS (exc. SS)
  240.         #SS(0)                illegal memory operand in SS
  241.         #PF    #PF
  242.     #UD    #UD    #UD            if 2nd operand is register
  243.     #13                    if any part of operand lie
  244.                         outside of 0..FFFFh
  245.         #AC    #AC            if CPL=3 and enable AC.
  246.  
  247.  
  248. Note:     (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  249.       instruction that self.
  250.      (286+) saved as pointer to BOUND instruction.
  251.  
  252.  
  253.  
  254. +++++++++++++++++++++++
  255.  
  256. Physical Form: BOUND reg16,mem32
  257.            BOUND reg32,mem64
  258.  
  259. COP (Code of Operation)     : 62H    Postbyte
  260. Note: for 32bit op. add Pfix 66h if in 16bit mode
  261.  
  262. Clocks:        BOUND reg16,mem16
  263.         In Range    Out Range
  264. 80186:                33-35
  265. 80286:        13        int+13
  266. 80386:        10
  267. i486:        7
  268. Pentium:    8        int+32
  269.  
  270. Cx486SLC:    11        int+11
  271. Cx486DX:    11        int+11
  272.  
  273.  
  274.  
  275. ---------------------------------------------------
  276. BRKCS  -  Break with Contex Switch
  277.  
  278. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  279. Type of Instruction: System
  280.  
  281. Instruction:  BRKCS  bank
  282.  
  283. Description:
  284.     Perform a High-Speed Software Interrupt with contex-switch to
  285.     register bank indicated by the lower 3-bits of 'bank'.
  286.  
  287.  
  288. Info:    NEC V25/V35/V25 Plus/V35 Plus Bank System
  289.  
  290.     This Chips have     8 32bytes register banks, which placed in
  291.     Internal chip RAM by addresses:
  292.     xxE00h..xxE1Fh Bank 0
  293.     xxE20h..xxE3Fh Bank 1
  294.        .........
  295.     xxEC0h..xxEDFh Bank 6
  296.     xxEE0h..xxEFFh Bank 7
  297.     xxF00h..xxFFFh Special Functions Register
  298.     Where xx is Value of IDB register.
  299.     IBD is Byte Register contained Internal data area base
  300.     IBD addresses is FFFFFh and xxFFFh where xx is data in IBD.
  301.  
  302.  
  303.  
  304.     Format of Bank:
  305.     +0    Reserved
  306.     +2    Vector PC
  307.     +4    Save   PSW
  308.     +6    Save   PC
  309.     +8    DS0        ;DS
  310.     +A    SS        ;SS
  311.     +C    PS        ;CS
  312.     +E    DS1        ;ES
  313.     +10    IY        ;DI
  314.     +11    IX        ;SI
  315.     +14    BP        ;BP
  316.     +16    SP        ;SP
  317.     +18    BW        ;BX
  318.     +1A    DW        ;DX
  319.     +1C    CW        ;CX
  320.     +1E    AW        ;AX
  321.  
  322.     Format of V25 etc. PSW (FLAGS):
  323.     Bit    Description
  324.     15    1
  325.     14    RB2 \
  326.     13    RB1  >    Current Bank Number
  327.     12    RB0 /
  328.     11    V    ;OF
  329.     10    DIR    ;DF
  330.     9    IE    ;IF
  331.     8    BRK    ;TF
  332.     7    S    ;SF
  333.     6    Z    ;ZF
  334.     5    F1    General Purpose user flag #1
  335.             (accessed by Flag Special Function Register)
  336.     4    AC    ;AF
  337.     3    F0    General purpose user flag #0
  338.             (accessed by Flag Special Function Register)
  339.     2    P    ;PF
  340.     1    BRKI    I/O Trap Enable Flag
  341.     0    CY    ;CF
  342.  
  343.  
  344. Flags Affected:     None
  345.  
  346. CPU mode: RM
  347.  
  348. +++++++++++++++++++++++
  349. Physical Form:    BRKCS reg16
  350. COP (Code of Operation)     : 0Fh 2Dh <1111 1RRR>
  351.  
  352. Clocks:     15
  353.  
  354.  
  355.  
  356. ---------------------------------------------------
  357. BRKEM  -  Break for Emulation
  358.  
  359.  
  360. CPU: NEC/Sony V20/V30/V40/V50
  361. Type of Instruction: System
  362.  
  363. Instruction:  BRKEM  intnum
  364.  
  365.  
  366. Description:
  367.         PUSH    FLAGS
  368.         PUSH    CS
  369.         PUSH    IP
  370.         MOV    CS,0:[intnum*4+2]
  371.         MOV    IP,0:[intnum*4]
  372.         MD <- 0;    // Enable 8080 emulation
  373.  
  374.  
  375. Note:    BRKEM instruction do software interrupt and then New CS,IP loaded
  376.     it switch to 8080 mode i.e. CPU will execute 8080 code.
  377.     Mapping Table of Registers in 8080 Mode
  378.     8080 Md.   A  B     C  D  E  H  L    SP PC  F
  379.     native.       AL CH CL DH DL BH BL BP IP  FLAGS(low)
  380.     For Return of 8080 mode use CALLN instruction.
  381. Note:    I.e. 8080 addressing only 64KB then "Real Address" is CS*16+PC
  382.  
  383. Flags Affected: MD
  384.  
  385. CPU mode: RM
  386.  
  387. +++++++++++++++++++++++
  388. Physical Form:           BRKEM imm8
  389. COP (Code of Operation)     : 0FH FFH imm8
  390.  
  391. Clocks:        BRKEM  imm8
  392. NEC V20:    38
  393.  
  394.  
  395.  
  396. ---------------------------------------------------
  397. BRKN    -  Break to Native Mode
  398.  
  399. CPU:  NEC (V25/V35) Software Guard only
  400. Type of Instruction: System
  401.  
  402. Instruction:  BRKN int_vector
  403.  
  404.  
  405. Description:
  406.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  407.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  408.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  409.          SP     <-  SP -6
  410.          IE     <-  0
  411.          BRK <-  0
  412.          MD     <-  1
  413.          PC     <- [int_vector*4 +0,+1]
  414.          PS     <- [int_vector*4 +2,+3]
  415.  
  416. Note:    The BRKN instruction switches operations in Native Mode
  417.     from Security Mode via Interrupt call. In Normal Mode
  418.     Instruction executed as     mPD70320/70322 (V25) operation mode.
  419.  
  420. Flags Affected:     None
  421.  
  422. CPU mode: RM
  423.  
  424. +++++++++++++++++++++++
  425. Physical Form:    BRKN  imm8
  426. COP (Code of Operation)     : 63h imm8
  427.  
  428. Clocks:     56+10T [44+10T]
  429. ---------------------------------------------------
  430. BRKS    -  Break to Security Mode
  431.  
  432. CPU:  NEC (V25/V35) Software Guard  only
  433. Type of Instruction: System
  434.  
  435. Instruction:  BRKS int_vector
  436.  
  437.  
  438. Description:
  439.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  440.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  441.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  442.          SP     <-  SP -6
  443.          IE     <-  0
  444.          BRK <-  0
  445.          MD     <-  0
  446.          PC     <- [int_vector*4 +0,+1]
  447.          PS     <- [int_vector*4 +2,+3]
  448.  
  449. Note:    The BRKS instruction switches operations in Security Mode
  450.     via Interrupt call. In Security Mode the fetched operation
  451.     code is executed after conversion in accordance with build-in
  452.     translation table
  453.  
  454. Flags Affected:     None
  455.  
  456. CPU mode: RM
  457.  
  458. +++++++++++++++++++++++
  459. Physical Form:    BRKS  imm8
  460. COP (Code of Operation)     : F1h imm8
  461.  
  462. Clocks:     56+10T [44+10T]
  463. ---------------------------------------------------
  464. BRKXA    -  Break to Expansion Address
  465.  
  466. CPU:  NEC V33/V53  only
  467. Type of Instruction: System
  468.  
  469. Instruction:  BRKXA int_vector
  470.  
  471.  
  472. Description:
  473.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  474.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  475.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  476.          SP     <-  SP -6
  477.          IE     <-  0
  478.          BRK <-  0
  479.          MD     <-  0
  480.          PC     <- [int_vector*4 +0,+1]
  481.          PS     <- [int_vector*4 +2,+3]
  482.          Enter Expansion Address Mode.
  483.  
  484. Note:    In NEC V53 Memory Space dividing into 1024 16K pages.
  485.     The programming model is Same as in Normal mode.
  486.  
  487.     Mechanism is:
  488.     20 bit Logical Address:     19..14 Page Num  13..0 Offset
  489.  
  490.     page Num convertin by internal table to 23..14 Page Base
  491.     tHE pHYSICAL ADDRESS is both Base and Offset.
  492.  
  493.     Address Expansion Registers:
  494.     logical Address A19..A14    I/O Address
  495.     0                FF00h
  496.     1                FF02h
  497.     ...                ...
  498.     63                FF7Eh
  499.  
  500.     Register XAM aliased with port # FF80h indicated current mode
  501.     of operation.
  502.     Format of XAM register (READ ONLY):
  503.     15..1    reserved
  504.     0    XA Flag, if=1 then in XA mode.
  505.  
  506.  
  507. Format    of  V53 PSW:
  508.     15..12    1
  509.     11    V
  510.     10    DIR
  511.     9    IE
  512.     8    BRK
  513.     7    S
  514.     6    Z
  515.     5    0
  516.     4    AC
  517.     3    0
  518.     2    P
  519.     1    1
  520.     0    CY
  521.  
  522. Flags Affected:     None
  523.  
  524. CPU mode: RM
  525.  
  526. +++++++++++++++++++++++
  527. Physical Form:    BRKXA  imm8
  528. COP (Code of Operation)     : 0Fh E0h imm8
  529.  
  530. Clocks:     12
  531. ---------------------------------------------------
  532. BTCLR    -  Bit Test, If it True Clear and Branch
  533.  
  534. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  535. Type of Instruction: User
  536.  
  537. Instruction:  BTCLR var,bitnumber,Short_Label
  538.  
  539.  
  540. Description:
  541.           IF  BIT(bitnumber OF var) =1 THEN
  542.             {
  543.             PC <- PC + ext - disp8;
  544.             BIT(bitnumber OF var) <-0
  545.             }
  546.  
  547.  
  548. Flags Affected:     None
  549.  
  550. CPU mode: RM
  551.  
  552. +++++++++++++++++++++++
  553. Physical Form:    BTCLR reg/mem8,imm3, short_label
  554. COP (Code of Operation)     : 0Fh 9Ch PostByte imm3  Short_Label (Total=5 bytes)
  555.  
  556. Clocks:     29
  557.  
  558.  
  559.  
  560. ---------------------------------------------------
  561. BSWAP  - Bytes Swap
  562.  
  563.  
  564. CPU:  I486 +
  565. Type of Instruction: User
  566.  
  567. Instruction: BSWAP dwordr
  568.  
  569. Description:
  570.          XCHG  BYTE dwordr[31:24],dwordr[7:0]
  571.          XCHG  BYTE dwordr[23:16],dwordr[15:8]
  572.  
  573.          ; Need Good Picture to Show It
  574.  
  575. Notes: This instruction used for converting big-endian
  576. (Intel) format to little-endian (Motorolla etc.) format.
  577.  
  578.  
  579. Flags Affected: None
  580. CPU mode: RM,PM,VM,SMM
  581.  
  582. Physical Form:         BSWAP r32
  583. COP (Code of Operation): 0FH 11001rrr  (For 32bit segment)
  584. Clocks: Cyrix Cx486SLC : 4
  585.           i486     : 1
  586.           Pentium  : 1
  587.     Cyrix Cx486DX  : 4
  588.     UMC   U5S      : 2
  589.     IBM 486BL3X    : 9
  590.  
  591.  
  592.  
  593.  
  594. ---------------------------------------------------
  595. CALLN      - Call Native Mode Routine
  596.  
  597.  
  598. CPU: NEC/Sony V20/V30 etc
  599. Type of Instruction: System
  600.  
  601. Instruction:  CALLN intnum
  602.  
  603.  
  604. Description:
  605.     CALLN instruction call (interrupt service in Native Mode)
  606.     from 8080 emulation mode:
  607.         PUSH    FLAGS
  608.         PUSH    CS
  609.         PUSH    IP
  610.         IF <- 0
  611.         TF <- 0
  612.         MD <- 1
  613.         MOV    CS,0:[intnum*4+2]
  614.         MOV    IP,0:[intnum*4]
  615.  
  616.  
  617.  
  618. Flags Affected: IF,TF,MD
  619.  
  620. CPU mode: 8080 Emulation
  621.  
  622. +++++++++++++++++++++++
  623. Physical Form: CALLN imm8
  624. COP (Code of Operation)     : EDH EDH imm8
  625.  
  626. Clocks:
  627. NEC V20/V30:    38-58
  628.  
  629.  
  630. ---------------------------------------------------
  631. CLEAR1    -  Clear one bit
  632.  
  633.  
  634. CPU: NEC/Sony all V-series.
  635. Type of Instruction: User
  636.  
  637. Instruction:  CLEAR1 dest,bitnumb
  638.  
  639.  
  640. Description:
  641.         BIT  bitnumb OF dest <- 0;
  642.  
  643.  
  644.  
  645. Flags Affected: None
  646.  
  647.  
  648. CPU mode: RM
  649.  
  650. +++++++++++++++++++++++
  651. Physical Form:           CLEAR1 reg/mem8,CL
  652. COP (Code of Operation)     : 0FH 12H  Postbyte
  653.  
  654. Physical Form:           CLEAR1 reg/mem8,imm8
  655. COP (Code of Operation)     : 0FH 1AH  Postbyte imm8
  656.  
  657. Physical Form:           CLEAR1 reg/mem16,CL
  658. COP (Code of Operation)     : 0FH 13H  Postbyte
  659.  
  660. Physical Form:           CLEAR1 reg/mem16,imm8
  661. COP (Code of Operation)     : 0FH 1BH  Postbyte  imm8
  662.  
  663.  
  664. Clocks:                 CLEAR1
  665.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  666. NEC V20:      5/14     6/15          5/14         6/15
  667.  
  668.  
  669.  
  670. ---------------------------------------------------
  671. CMOVcc     -    Conditional Move
  672.  
  673. CPU:  P6
  674. Type of Instruction:  User
  675.  
  676. Instruction:  CMOVcc  dest,sorc
  677.  
  678.  
  679. Description:
  680.           IF condition(cc) is true THEN dest <- sorc;
  681.  
  682.  
  683. Flags Affected: None
  684.  
  685.  
  686.  
  687. CPU mode: RM,PM,VM,SMM
  688.  
  689.  
  690. +++++++++++++++++++++++
  691. Physical Form & COPs:
  692.  
  693. CMOVO    reg,reg/mem    0FH 40H Postbyte
  694. CMOVNO    reg,reg/mem    0FH 41H Postbyte
  695. CMOVC    reg,reg/mem    0FH 42H Postbyte
  696. CMOVNC    reg,reg/mem    0FH 43H Postbyte
  697. CMOVZ    reg,reg/mem    0FH 44H Postbyte
  698. CMOVNZ    reg,reg/mem    0FH 45H Postbyte
  699. CMOVNA    reg,reg/mem    0FH 46H Postbyte
  700. CMOVA    reg,reg/mem    0FH 47H Postbyte
  701. CMOVS    reg,reg/mem    0FH 48H Postbyte
  702. CMOVNS    reg,reg/mem    0FH 49H Postbyte
  703. CMOVP    reg,reg/mem    0FH 4AH Postbyte
  704. CMOVNP    reg,reg/mem    0FH 4BH Postbyte
  705. CMOVL    reg,reg/mem    0FH 4CH Postbyte
  706. CMOVNL    reg,reg/mem    0FH 4DH Postbyte
  707. CMOVNG    reg,reg/mem    0FH 4EH Postbyte
  708. CMOVG    reg,reg/mem    0FH 4FH Postbyte
  709.  
  710. Clocks:     ~1  (~pairing with other instructions)
  711. ---------------------------------------------------
  712. CMP4S  -  Compare for packed BCD strings
  713.  
  714.  
  715. CPU: NEC/Sony all  V-series
  716. Type of Instruction: User
  717.  
  718. Instruction:  CMP4S
  719.  
  720.  
  721. Description:
  722.       SetFlaGS( BCD STRING (ADDRESS=ES:DI,LENGTH=CL) -
  723.             BCD STRING (ADDRESS=DS:SI,LENGTH=CL) );
  724.  
  725.  
  726. Note:    si,di, other registers not changed
  727.  
  728. Flags Affected: OF,CF,ZF
  729.     ;;  ZF set if RESULT of subtraction is zero.
  730.     ;;  CF,OF set as result of operation with most
  731.     ;;  signification BCDs.
  732.  
  733. CPU mode: RM
  734.  
  735. +++++++++++++++++++++++
  736. Physical Form: CMP4S
  737. COP (Code of Operation)     : 0FH 26H
  738.  
  739. Clocks:        CMP4S
  740. NEC V20:    ~7+19*CL
  741.  
  742.  
  743.  
  744.  
  745.  
  746. ---------------------------------------------------
  747. CMPXCHG8B  - Compare and exchange 8 bytes
  748.  
  749.  
  750. CPU:  Pentium (tm)
  751. Type of Instruction: Operation
  752.  
  753. Instruction: CMPXCHG8B dest
  754.  
  755. Note: dest is memory operand: QWORD PTR [memory]
  756.  
  757. Description:
  758.     IF ( QWORD(EDX:EAX) = dest) THEN
  759.              {
  760.              ZF <- 1;
  761.              dest <- QWORD(ECX:EBX);
  762.              }
  763.            ELSE
  764.              {
  765.              ZF <- 0;
  766.              EDX:EAX <- dest
  767.              }
  768.       END
  769.  
  770. Flags Affected:     ZF
  771.  
  772. CPU mode: RM,PM,VM,SMM
  773.  
  774. Physical Form:           CMPXCHG8B mem64
  775. COP (Code of Operation)     : 0FH C7H Postbyte
  776. Clocks:          Pentium     : 10
  777.  
  778. Note: Postbyte MMRRRMMM:  MM<>11 if (==) then INT 6
  779.  
  780. ---------------------------------------------------
  781. CMPXCHG     - Compare and exchange
  782.  
  783.  
  784.  
  785. CPU:  i486+
  786. Type of Instruction: User
  787.  
  788. Instruction: CMPXCHG dest,sorc
  789.  
  790.  
  791. Description:
  792.     Acc = if OperationSize(8)  -> AL
  793.          OperationSize(16) -> AX
  794.          OperationSize(32) -> EAX
  795.  
  796.     IF ( Acc = dest) THEN
  797.              {
  798.              ZF <- 1;
  799.              dest <- sorc;
  800.              }
  801.            ELSE
  802.              {
  803.              ZF <- 0;
  804.              Acc <- dest;
  805.              }
  806.       END
  807.  
  808. Note: This instruction used to support semaphores
  809.  
  810.  
  811. Flags Affected:     ZF ( see description)
  812.          OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  813.  
  814. CPU mode: RM,PM,VM,SMM
  815.  
  816. +++++++++++++++++++++++
  817. Physical Form:           CMPXCHG  r/m8,r8
  818. COP (Code of Operation)     : 0FH A6H Postbyte    ; i486 (A-B0 step)
  819.              : 0FH B0H Postbyte    ; i486 (B1+ step clones
  820.                            ;      and upgrades)
  821.  
  822. Clocks:
  823.        Intel i486     :  6/7     if compare OK
  824.              :  6/10 if compare FAIL
  825.      Cyrix Cx486SLC     :  5/7
  826.      Pentium (tm)     :  6
  827.  
  828. Penalty if cache miss     :
  829.       Intel i486     : 2
  830.      Cyrix Cx486SLC     : 1
  831. +++++++++++++++++++++
  832. Physical Form:           CMPXCHG  r/m16,r16
  833.                CMPXCHG  r/m32,r32
  834. COP (Code of Operation)     : 0FH A7H Postbyte    ; i486 (A-B0 step)
  835.              : 0FH B1H Postbyte    ; i486 (B1+ step clones
  836.                            ;      and upgrades)
  837.  
  838. Clocks:
  839.        Intel i486     :  6/7     if compare OK
  840.              :  6/10 if compare FAIL
  841.      Cyrix Cx486SLC     :  5/7
  842.      Pentium (tm)     :  6
  843.  
  844. Penalty if cache miss     :
  845.       Intel i486     : 2
  846.      Cyrix Cx486SLC     : 1
  847.  
  848.  
  849.  
  850. ---------------------------------------------------
  851. CPUID - CPU Identification
  852.  
  853.  
  854. CPU:  Intel 486DX/SX/DX2 SL Enhanced and all later
  855. Intel processors include ( IntelDX4, IntelSX2,
  856. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  857. Cyrix M1, AMD K5, Intel P6, and AMD Ehnanced Am486 CPU,
  858. such as A80486DX4-100SV8B.
  859.  
  860. Note: i.e.  1993+ years processors produced by Intel
  861. Note: To know if your CPU support CPUID instruction
  862. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  863. if it sets this mean that CPUID support.(Soft).
  864. Or If Your CPU is Intel Look for '&E' signature on
  865. Top side of Chip.(Hard)
  866. Type of Instruction: Operation
  867.  
  868. Instruction: CPUID
  869.  
  870. Description:
  871.     IF (EAX=0) THEN
  872.           {
  873.           EAX <- Maximum value of EAX to CALL CPUID instruction
  874.             1 for all processors (date 1 September 1994)
  875.             may be >1 in future microprocessors
  876.  
  877.           ;; EBX,EDX and ECX contain a OEM name string
  878.           ;; for Intel this string is 'GenuineIntel'
  879.  
  880.            EBX <- 756E6547H i.e. 'Genu'
  881.            EDX <- 49656E69H i.e. 'ineI'
  882.            ECX <- 6C65746EH i.e. 'ntel'
  883.  
  884.           ;; for UMC   this string is 'UMC UMC UMC '
  885.  
  886.            EBX <- 32434D55H i.e. 'UMC '
  887.            EDX <- 32434D55H i.e. 'UMC '
  888.            ECX <- 32434D55H i.e. 'UMC '
  889.  
  890.           ;; for Cyrix this string is 'CyrixInstead'  (M1,M1sc)
  891.           ;; for AMD   this string is 'AuthenticAMD'  (K5,486 Enhanced CPUs)
  892.  
  893.           }
  894.     ELSEIF (EAX=1) THEN
  895.           {
  896.           EAX[3:0]    <- Stepping ID
  897.           EAX[7:4]    <- Model
  898.           EAX[11:8] <- Family
  899.              ;    3 - 386 family
  900.              ;    4 - i486 family
  901.              ;    5 - Pentium family
  902.              ;    6 - P6 family
  903.           EAX[15:12] <- Reserved
  904.              ;    0 - Original OEM processor
  905.              ;    1 - OverDrive
  906.              ;    2 - Dual Processor
  907.              Note: Pentium P54C have pin CPUTYPE which
  908.                define is this CPU First or Second e.t.c
  909.                in System.
  910.                So, if this chip set in "First" socket it
  911.                    return for example  0425h, but THIS chip
  912.                    return 2425h if we insert it in "Second"
  913.                    socket.
  914.         Note: Refer to Appendix B for more information.
  915.  
  916.  
  917.           EAX[31:16] <- Reserved and set to 0s now
  918.  
  919.           EDX <- Compability flags
  920.           ;; below all info if bit flag =1
  921.          EDX[0] <- FPU:     FPU on Chip
  922.          EDX[1] <- VME:     Virtual Mode Extention present
  923.          EDX[2] <- DE:     Debbuging Extentions
  924.          EDX[3] <- PSE:     CPU support  4MB size pages
  925.          EDX[4] <- TSC:     TSC present (See RDTSC command)
  926.          EDX[5] <- MSR:     CPU have Pentium Compatible MSRs
  927.          EDX[6] <- PAE:     Physical Address Extension
  928.          EDX[7] <- MCE:     Machine Check exception
  929.          EDX[8] <- CX8:     Support CMPXCHG8B instruction
  930.          EDX[9] <- APIC: Local APIC on Chip
  931.          EDX[10]<-  reserved
  932.          EDX[11]<-  reserved
  933.          EDX[12]<- MTRR: CPU support Memory Type Range Register (MTRR)
  934.          EDX[13]<- PGE:     Page Global Feature support
  935.          EDX[14]<- MCA:     Machine Check Architecture
  936.          EDX[15]<- CMOV: CPU support CMOV instruction
  937.          EDX[22..16] <- Reserved
  938.          EDX[23] <- CPU support IA MMX
  939.          EDX[31:24] <- Reserved and set to 0s now
  940.           }
  941.     ELSEIF (EAX=2)
  942.           {
  943.           AL = 1    (Pentium Pro)
  944.           remainder of EAX and EBX,ECX,EDX contain bytes which
  945.           described cache architecture on this chip.
  946.           Description of this bytes is:
  947.           Value        Description
  948.           00h        None
  949.           01h        Instruction TLB, 4K page, 4way, 64 entry
  950.           02h        Instruction TLB, 4M page, 4way, 4 entry
  951.           03h        Data TLB, 4K page, 4way, 64 entry
  952.           04h        Data TLB, 4M page, 4way, 8 entry
  953.           06h        Instruction Cache, 8K, 4 way, 32 byte per line
  954.           0Ah        Data cache, 8K, 2 way, 32 byte per line
  955.           41h        Unifed cache, 32 byte per line, 4 way, 128KB
  956.           42h        Unifed cache, 32 byte per line, 4 way, 256KB
  957.           43h        Unifed cache, 32 byte per line, 4 way, 512KB
  958.          }
  959.     ELSEIF ( EAX > 1 ) THEN
  960.           {
  961.           EAX,EBX,ECX,EDX <- Undefined
  962.           }
  963.     END.
  964.  
  965.  
  966. Global Note:
  967.        This file contain open i.e nonconfiderential information about
  968.        CPUID information.
  969.        If you want MORE try to contact Intel, may be (but I'm sure that not)
  970.          Intelers give you "Yellow Pages" (i.e Supplement to Pentium(tm)
  971.          Processor User's Manual) to read inside office.
  972.  
  973. Refer to:  Appendix B for more informations about CPU codes.
  974.  
  975. Here is 3 examples of Information we can may get from CPUID instruction:
  976.  
  977. 1) UMC U5S
  978.    Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  979.      and never support VME
  980.  
  981. CPUID return CPUID information
  982. Maximum Available of CPUID info entrys:1
  983. Vendor string is : "UMC UMC UMC "
  984.  
  985. Model Info :
  986. Stepping ID is : 3
  987. Model           : 2
  988. Family           : 4
  989. M field           : 0
  990. Compability Flags:
  991. FPU on Chip               :-
  992. Virtual Mode Extensions present       :-
  993. CPU support I/O breakpoints       :-
  994. CPU support 4MB pages           :-
  995. Time Stamp Counter Presents       :-
  996. CPU have Pentium compatible MSRs   :-
  997. Machine Check Exception Presents   :-
  998. CMPXCHG8B instruction support       :-
  999. APIC on Chip               :-
  1000.  
  1001.  
  1002.  
  1003. 2) Intel 486
  1004.    Note: All SL Enhanced 486:  { i486SX,i486DX,i486DX2 marked '&E' on chip
  1005.    surface }, IntelSX2,IntelDX4 support VME !!!!
  1006.    But: Sxs never have FPU on chip.
  1007.  
  1008. CPUID return CPUID information
  1009. Maximum Available of CPUID info entrys:1
  1010. Vendor string is : "GenuineIntel"
  1011.  
  1012. Model Info :
  1013. Stepping ID is : 0
  1014. Model           : 8
  1015. Family           : 4
  1016. M field           : 0
  1017. Compability Flags:
  1018. FPU on Chip               :+
  1019. Virtual Mode Extensions present       :+
  1020. CPU support I/O breakpoints       :-
  1021. CPU support 4MB pages           :-
  1022. Time Stamp Counter Presents       :-
  1023. CPU have Pentium compatible MSRs   :-
  1024. Machine Check Exception Presents   :-
  1025. CMPXCHG8B instruction support       :-
  1026. APIC on Chip               :-
  1027.  
  1028.  
  1029. 3) Pentium
  1030.    Note: P54C may say that build-in APIC not present if it
  1031.    not supported by external hardware !!!!! (This data from
  1032.    P54C in single processor configuration)
  1033.  
  1034. CPUID return CPUID information
  1035. Maximum Available of CPUID info entrys:1
  1036. Vendor string is : "GenuineIntel"
  1037.  
  1038. Model Info :
  1039. Stepping ID is : 1
  1040. Model           : 2
  1041. Family           : 5
  1042. M field           : 0
  1043. Compability Flags:
  1044. FPU on Chip               :+
  1045. Virtual Mode Extensions present       :+
  1046. CPU support I/O breakpoints       :+
  1047. CPU support 4MB pages           :+
  1048. Time Stamp Counter Presents       :+
  1049. CPU have Pentium compatible MSRs   :+
  1050. Machine Check Exception Presents   :+
  1051. CMPXCHG8B instruction support       :+
  1052. APIC on Chip               :-
  1053.  
  1054.  
  1055. 4) Pentium OverDrive
  1056.    Note: P24T never have Machine Check Exception
  1057.  
  1058. CPUID return CPUID information
  1059. Maximum Available of CPUID info entrys:1
  1060. Vendor string is : "GenuineIntel"
  1061.  
  1062. Model Info :
  1063. Stepping ID is : 1
  1064. Model           : 3
  1065. Family           : 5
  1066. M field           : 1
  1067. Compability Flags:
  1068. FPU on Chip               :+
  1069. Virtual Mode Extensions present       :+
  1070. CPU support I/O breakpoints       :+
  1071. CPU support 4MB pages           :+
  1072. Time Stamp Counter Presents       :+
  1073. CPU have Pentium compatible MSRs   :+
  1074. Machine Check Exception Presents   :-
  1075. CMPXCHG8B instruction support       :+
  1076. APIC on Chip               :-
  1077.  
  1078. 5) AMD Am5x86 (also AMD Enhanced 486).
  1079.  
  1080. CPUID return CPUID information
  1081. Maximum Available of CPUID info entrys:1
  1082. Vendor string is : "AuthenticAMD"
  1083.  
  1084. Model Info :
  1085. Stepping ID is : 4
  1086. Model           : 15
  1087. Family           : 4
  1088. M field           : 0
  1089. Compability Flags:
  1090. FPU on Chip               :+
  1091. Virtual Mode Extensions present       :-
  1092. CPU support I/O breakpoints       :-
  1093. CPU support 4MB pages           :-
  1094. Time Stamp Counter Presents       :-
  1095. CPU have Pentium compatible MSRs   :-
  1096. P6 Flag: n/a               :-
  1097. Machine Check Exception Presents   :-
  1098. CMPXCHG8B instruction support       :-
  1099.  
  1100.  
  1101.  
  1102.  
  1103. 6) Pentium Pro (P6)
  1104.  
  1105. GenuineIntelCPUID return CPUID information
  1106. Maximum Available of CPUID info entrys:2     <<-------------- !!!!
  1107. Vendor string is : "GenuineIntel"
  1108.  
  1109. Model Info :
  1110. Stepping ID is : 1
  1111. Model           : 1
  1112. Family           : 6
  1113. M field           : 0
  1114. Compability Flags:
  1115. FPU on Chip               :+
  1116. Virtual Mode Extensions present       :+
  1117. CPU support I/O breakpoints       :+
  1118. CPU support 4MB pages           :+
  1119. Time Stamp Counter Presents       :+
  1120. CPU have Pentium compatible MSRs   :+
  1121. P6 Flag: n/a               :+
  1122. Machine Check Exception Presents   :+
  1123. CMPXCHG8B instruction support       :+
  1124. APIC on Chip               :-
  1125. P6 Flag: n/a               :-
  1126. P6 Flag: n/a               :+  <------ !!!
  1127. P6 Flag: n/a               :+  <------ !!!
  1128. P6 Flag: n/a               :+  <------ !!!
  1129. P6 Flag: n/a               :+  <------ !!!
  1130. P6 Flag: n/a               :+  <------ !!!
  1131.  
  1132. Hate to any other Info
  1133.  
  1134.  
  1135.  
  1136. -> END of Examples
  1137.  
  1138.  
  1139. Note: NexGen Nx586, Cyrix 486 and 5x86 never support CPUID.
  1140.  
  1141. Flags Affected: None
  1142.  
  1143. CPU mode: RM,PM,VM,SMM
  1144.  
  1145. Physical Form:         CPUID
  1146. COP (Code of Operation): 0FH A2H
  1147. Clocks:      486s & Pentium  (EAX=1)        : 14
  1148.       486s & Pentium  (EAX=0 or EAX>1)  : 9
  1149.  
  1150. ---------------------------------------------------
  1151. EMMS   - Empty MMX state
  1152.  
  1153.  
  1154. CPU:  all which supported IA MMX:
  1155.       Pentium (P55C only), Pentium (tm) Pro  (P6)
  1156. Type of Instruction: User
  1157.  
  1158. Instruction: EMMS
  1159.  
  1160. Description:
  1161.        TW <- 0xFFFFh
  1162.  
  1163. Note: Instruction EMMS MUST be executed after MMX  sequence,
  1164.       this instruction fill FPU Tag Word (TW) with 11s (i.e. all elements of
  1165.       stack are empty.
  1166.  
  1167. Flags affected:     None
  1168.  
  1169. Exceptions:
  1170.  
  1171. ++++++++++++++++++++++++++++++++++++++
  1172. COP & Times:
  1173.  
  1174.    EMMS        0FH 77H
  1175.       P55C:     n/a
  1176.     P6:     n/a
  1177.  
  1178.  
  1179. ---------------------------------------------------
  1180. ESC   -     Escape Extrnal Cooprocessors
  1181.  
  1182. CPU:  8086...80386, any Hybrid 486.
  1183. Type of Instruction: User
  1184.  
  1185. Instruction:  ESC Number,R/M
  1186.  
  1187.  
  1188. Description:  This Instruction uses for Link with External Coprocessors
  1189.           Such as NPX. External Coprocessors look at command sequence
  1190.           at get ESC. CPU give Memory Operand sending to A-bus EA
  1191.           doing pseudo-read operation.
  1192.           {     If 2nd Operand is Register then Do Nothing,
  1193.          If 2nd Operand is Memory   then set EA (Effective Address)
  1194.                         in Address Bus   }
  1195.           First operand is Part of Command that Ext. coprocessors get.
  1196.  
  1197. Flags Affected: None
  1198.  
  1199. Example:      ESC 0Fh,DX      means         FSQRT
  1200.  
  1201.  
  1202. Note:    ESC mnemonic was used for 8086 CPU, later all were used alternative
  1203.     mnemonic for cooprocessor instructions, such as FSQRT.
  1204.  
  1205. CPU mode: RM,PM,VM,SMM
  1206.  
  1207. +++++++++++++++++++++++
  1208. Physical Form:
  1209. COP (Code of Operation)     : <1101 1xxx> Postbyte
  1210.  
  1211. Clocks:        ESC  n,Reg    ESC n,Mem8/Mem16
  1212. 8088:           2             8/12+EA
  1213. 286:          9-20              9-20
  1214. 386:          N/A               N/A
  1215. 486:          N/A               N/A
  1216.  
  1217. ---------------------------------------------------
  1218. EXT  -    Extract Bit Field
  1219.  
  1220.  
  1221. CPU: NEC/Sony all  V-series
  1222. Type of Instruction: User
  1223.  
  1224. Instruction:  EXT  start,len
  1225.  
  1226.  
  1227. Description:
  1228.       AX <- BitField [
  1229.                  BASE =  DS:SI
  1230.          START BIT OFFSET =  start
  1231.                LENGTH =  len
  1232.              ];
  1233.  
  1234.  
  1235. Note:    si and start automatically UPDATE
  1236.  
  1237. Flags Affected: None
  1238.  
  1239. CPU mode: RM
  1240.  
  1241. +++++++++++++++++++++++
  1242. Physical Form         : EXT    reg8,reg8
  1243. COP (Code of Operation)     : 0FH 33H  PostByte
  1244.  
  1245.  
  1246. Clocks:        EXT  reg8,reg8
  1247. NEC V20:    26-55
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256. ---------------------------------------------------
  1257. F4X4 - FPU: Multiplicate vector on Matrix 4x4
  1258.  
  1259.  
  1260.  
  1261. FPU:  IIT FPUs.
  1262. Type of Instruction: FPU instruction
  1263.  
  1264. Instruction: F4X4
  1265.  
  1266. Description:
  1267.     ;   This Instruction Multiplicate vector on
  1268.     ; Matrix 4X4
  1269.  
  1270.  _  _        _               _    _  _
  1271. |    |       |            |      |    |
  1272. | Xn |       | A00  A01  A02  A03 |      | X0 |
  1273. | Yn |    =  | A10  A11  A12  A13 |  X   | Y0 |
  1274. | Zn |       | A20  A21  A22  A23 |      | Z0 |
  1275. | Wn |       | A30  A31  A31  A33 |      | W0 |
  1276. |_  _|       |_               _|      |_  _|
  1277.  
  1278.  
  1279.      ; Data fetches/stores from/to FPU registers:
  1280.  
  1281.     # of      F E T C H E S          STORE
  1282.        Register     Bank0 Bank1 Bank2    Bank0
  1283.     ST      X0    A33   A31      Xn
  1284.     ST(1)      Y0    A23   A21      Yn
  1285.     ST(2)      Z0    A13   A11      Zn
  1286.     ST(3)      W0    A03   A01      Wn
  1287.     ST(4)        A32   A30
  1288.     ST(5)        A22   A20
  1289.     ST(6)        A12   A10
  1290.     ST(7)        A02   A00
  1291.  
  1292.  
  1293.  
  1294. Note: See FSBP0,FSBP1,FSBP2 for more information
  1295.  
  1296.  
  1297. FPU Flags Affected:  S
  1298.  
  1299. FPU mode: Any
  1300.  
  1301. Physical Form:         F4X4
  1302. COP (Code of Operation): DBH F1H
  1303. Clocks:       IIT 2c87    : 242
  1304.        IIT 3c87    : 242
  1305.        IIT 3c87SX  : 242
  1306.  
  1307.  
  1308. ---------------------------------------------------
  1309. FCMOVcc      -  Floating Point Conditional Move
  1310.  
  1311. CPU:  P6
  1312. Type of Instruction:  User
  1313.  
  1314. Instruction:  FCMOVcc  dest,sorc
  1315.  
  1316.  
  1317. Description:
  1318.           IF condition(cc) is true THEN dest <- sorc;
  1319.  
  1320.  
  1321. Flags Affected:      Int: None
  1322.           Fp : None
  1323.  
  1324. Note:  Testing Integer flags:
  1325.  
  1326. cc    Meaning        Test Flags        Description
  1327. B    Below        CF=1            <
  1328. NB    Not Below    CF=0            >=
  1329. E    Equal        ZF=1            =
  1330. NE    Not Equal    ZF=0            !=
  1331. BE    Below Equal    (CF=1 .OR. ZF=1)    <=
  1332. NBE    Not BelowEqual    (CF=0 .AND. ZF=0)    >
  1333. U    Unordered    PF=1
  1334. NU    Not Unordered    PF!=1
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340. CPU mode: RM,PM,VM,SMM
  1341.  
  1342.  
  1343. +++++++++++++++++++++++
  1344. Physical Form & COPs:
  1345.  
  1346. FCMOVB     ST,STi DA C0+i
  1347. FCMOVE     ST,STi DA C8+i
  1348. FCMOVBE     ST,STi DA D0+i
  1349. FCMOVU     ST,STi DA D8+i
  1350. FCMOVNB     ST,STi DB C0+i
  1351. FCMOVNE     ST,STi DB C8+i
  1352. FCMOVNBE ST,STi DB D0+i
  1353. FCMOVNU     ST,STi DB D8+i
  1354.  
  1355.  
  1356.  
  1357. Clocks:     N/A
  1358. ---------------------------------------------------
  1359. FCOMI    -  Floating Point Compare setting Integer Flags
  1360.  
  1361. CPU:  P6
  1362. Type of Instruction:  User
  1363.  
  1364. Instruction:  FuCOMIp  ST0,STi
  1365.  
  1366.  
  1367. Description:
  1368.          CASE ( result (compare(ST0,STi) ) OF
  1369.         {          ; ZF PF CF
  1370.         Not Comparable: 1  1  1
  1371.         ST0 > STi     : 0  0  0
  1372.         ST0 < STi     : 0  0  1
  1373.         ST0 = STi     : 1  0  0
  1374.         }
  1375.  
  1376.          CASE ( FP_stack_status ) OF
  1377.         {          ; SF
  1378.         Overflow      : 1
  1379.         Underflow     : 0
  1380.         Otherwize     : 0
  1381.         }
  1382.  
  1383.          CASE ( instruction ) OF
  1384.         {
  1385.         FCOMI,FUCOMI   : No FP stack adjustment;
  1386.         FCOMIP,FUCOMIP : POP ST;
  1387.         }
  1388.  
  1389.  
  1390. Flags Affected:      Int: CF,ZF,PF,SF
  1391.           Fp : None
  1392.  
  1393.  
  1394. Note: In any case Sign of zero Ignored , so +0.0 = -0.0
  1395.  
  1396.  
  1397. CPU mode: RM,PM,VM,SMM
  1398.  
  1399.  
  1400. +++++++++++++++++++++++
  1401. Physical Form & COPs:
  1402.  
  1403. FCOMI    ST0,STi     DB F0+i
  1404. FCOMIP    ST0,STi     DF F0+i
  1405. FUCOMI    ST0,STi     DB E8+i
  1406. FUCOMIP ST0,STi     DF E8+i
  1407.  
  1408.  
  1409. Clocks:     N/A
  1410. ---------------------------------------------------
  1411. FNSTDW - FPU Not wait Store Device Word register
  1412.  
  1413.  
  1414. FPU:  i387SL Mobile
  1415. Type of Instruction: FPU instruction
  1416.  
  1417. Instruction: FNSTDW dest
  1418.  
  1419. Description:
  1420.     dest <- Device Word
  1421.  
  1422. Format of Device word:
  1423.     bit(s)    Description
  1424.     0-7    Reserved
  1425.      8    S - Status bit:
  1426.             if S=1 then FP device is a static design and OS
  1427.             or APM Bios may set CLK slow to 0 Mhz without
  1428.             lost any data.
  1429.     9-15    Reserved
  1430.  
  1431.  
  1432. Note: Device word register valid only after FNINIT
  1433.  
  1434.  
  1435. FPU Flags Affected: None
  1436.  
  1437. CPU mode: Any
  1438.  
  1439. Physical Form:         FNSTDW     AX
  1440. COP (Code of Operation): DFH E1H
  1441. Clocks:          i387SL Mobile: 13
  1442.  
  1443.  
  1444. ---------------------------------------------------
  1445. FNSTSG - FPU Not wait Store Signature Word register
  1446.  
  1447.  
  1448.  
  1449. FPU:  i387SL Mobile
  1450. Type of Instruction: FPU instruction
  1451.  
  1452. Instruction: FNSTSG dest
  1453.  
  1454. Description:
  1455.     dest <- Signature Word
  1456.  
  1457. Format of Signature word:
  1458.     bit(s)    Description
  1459.      3-0    Revision
  1460.      7-4    Steppin
  1461.     11-8    Family
  1462.     15-12    Version
  1463.  
  1464. Note:
  1465.     For i387(tm) SL Mobile Signature is:
  1466.         Version     = 2
  1467.         Family     = 3   ; 387
  1468.         Stepping = 1   ; Ax step
  1469.         Revision = 0   ; x0 step
  1470.                 i.e i387(tm) SL is A0 step
  1471.  
  1472. Note: This FPU is out of life
  1473.  
  1474.  
  1475. Note: Signature word register valid only after FNINIT
  1476.  
  1477.  
  1478. FPU Flags Affected: None
  1479.  
  1480. CPU mode: Any
  1481.  
  1482. Physical Form:         FNSTSG     AX
  1483. COP (Code of Operation): DFH E2H
  1484. Clocks:          i387SL Mobile: 13
  1485.  
  1486.  
  1487. ---------------------------------------------------
  1488. FPO2  -     Floating Point Operations 2nd Way
  1489.  
  1490.  
  1491. CPU: NEC/Sony  all V-series
  1492. Type of Instruction: User
  1493.  
  1494. Instruction:  FPO2  fp_op,mem
  1495.  
  1496.  
  1497. Description:
  1498.           This instruction was building for sending FP commands to
  1499.           NEC NPX which never be realized
  1500.  
  1501.  
  1502. Flags Affected: None
  1503.  
  1504. CPU mode: RM
  1505.  
  1506. +++++++++++++++++++++++
  1507. Physical Form         : FPO2 imm4,reg/mem
  1508. COP (Code of Operation)     :
  1509.             If imm4 in range 0-7 then
  1510.                 66H     mmFFFMMM there FFF is imm4.
  1511.             If imm4 in range 7-F then
  1512.                 67H     mmFFFMMM there FFF is imm4.
  1513.  
  1514.  
  1515. Clocks:        FPO2  imm4,reg/mem
  1516. NEC V20:         2/11
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525. ---------------------------------------------------
  1526. FRICHOP - FPU: Round to Integer chop method
  1527.  
  1528.  
  1529. FPU:  Cyrix FPUs and 486s with FPU on chip
  1530. Type of Instruction: FPU instruction
  1531.  
  1532. Instruction: FRICHOP
  1533.  
  1534. Description:
  1535.     ST <- ROUND ( ST,CHOP )
  1536.  
  1537. Note:
  1538.     This instruction calculate rounding ST toward zero
  1539.     i.e.  ignoring part righter that decimal .
  1540.  
  1541. Examples:
  1542.  
  1543.      1.2   ->   1.0
  1544.     -1.2   ->  -1.0
  1545.      3.0   ->   3.0
  1546.      0.0   ->   0.0
  1547.      1.5   ->   1.0
  1548.     -2.0   ->  -2.0
  1549.  
  1550.  
  1551. FPU Flags Affected:  S,P,D,I,C1
  1552.  
  1553. FPU mode: Any
  1554.  
  1555. Physical Form:         FRICHOP
  1556. COP (Code of Operation): DDH FCH
  1557. Clocks:          Cx83D87  : 15
  1558.           Cx83S87  : 15
  1559.           CxEMC87  : 15
  1560.           Cx487DLC :
  1561.  
  1562.  
  1563. ---------------------------------------------------
  1564. FRINEAR - FPU: Round to Integer Nearest method
  1565.  
  1566.  
  1567. FPU:  Cyrix FPUs and 486s with FPU on chip
  1568. Type of Instruction: FPU instruction
  1569.  
  1570. Instruction: FRINEAR
  1571.  
  1572. Description:
  1573.     ST <- ROUND ( ST,NEAREST )
  1574.  
  1575. Note:
  1576.     This instruction calculate rounding ST toward nearest
  1577.  
  1578. Examples:
  1579.  
  1580.      1.2   ->   1.0
  1581.     -1.2   ->  -1.0
  1582.      3.0   ->   3.0
  1583.      0.0   ->   0.0
  1584.      1.5   ->   1.0
  1585.      1.8   ->   2.0
  1586.     -2.0   ->  -2.0
  1587.  
  1588.  
  1589. FPU Flags Affected:  S,P,D,I,C1
  1590.  
  1591. FPU mode: Any
  1592.  
  1593. Physical Form:         FRINEAR
  1594. COP (Code of Operation): DFH FCH
  1595. Clocks:          Cx83D87  : 15
  1596.           Cx83S87  : 15
  1597.           CxEMC87  : 15
  1598.           Cx487DLC :
  1599.  
  1600.  
  1601.  
  1602. ---------------------------------------------------
  1603. FRINT2 - FPU: Round to Integer
  1604.  
  1605.  
  1606. FPU:  Cyrix FPUs and 486s with FPU on chip
  1607. Type of Instruction: FPU instruction
  1608.  
  1609. Instruction: FRINT2
  1610.  
  1611. Description:
  1612.     IF ( exact half ) THEN
  1613.         {
  1614.         ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  1615.         }
  1616.         ELSE
  1617.         {
  1618.         ST <- ROUND ( ST,NEAREST )
  1619.         }
  1620.     END
  1621.  
  1622. Note:
  1623.     This instruction calculate rounding ST toward nearest,
  1624.     but if number is exact half then this instruction round
  1625.     it toward signed infinity. Sign of this infinity is same
  1626.     with sign of number.
  1627.  
  1628. Examples:
  1629.  
  1630.      1.2   ->   1.0
  1631.     -1.2   ->  -1.0
  1632.      3.0   ->   3.0
  1633.      0.0   ->   0.0
  1634.      1.5   ->   2.0
  1635.      1.8   ->   2.0
  1636.     -2.0   ->  -2.0
  1637.     -1.5   ->  -2.0
  1638.  
  1639. FPU Flags Affected:  S,P,D,I,C1
  1640.  
  1641. FPU mode: Any
  1642.  
  1643. Physical Form:         FRINT2
  1644. COP (Code of Operation): DBH FCH
  1645. Clocks:          Cx83D87  : 15
  1646.           Cx83S87  : 15
  1647.           CxEMC87  : 15
  1648.           Cx487DLC :
  1649.  
  1650.  
  1651. ---------------------------------------------------
  1652. FRSTPM - FPU Reset Protected Mode
  1653.  
  1654.  
  1655.  
  1656. FPU:  i287XL i287XLT
  1657. Type of Instruction: FPU instruction
  1658.  
  1659. Instruction: FRSTPM
  1660.  
  1661. Description:
  1662.     Reset Cooprocessor from Protected Mode
  1663.     to Real Address mode.
  1664.  
  1665. FPU Flags Affected: None
  1666.  
  1667. CPU mode:Any ???
  1668.  
  1669. Physical Form:         FRSTPM
  1670. COP (Code of Operation): DBH E5H
  1671. Clocks:          i287XL   : 12
  1672.           i287XLT  : 12
  1673.  
  1674.  
  1675. ---------------------------------------------------
  1676. FSBP0 - FPU: Set Bank pointer to Bank # 0
  1677.  
  1678.  
  1679. FPU:  IIT FPUs.
  1680. Type of Instruction: FPU instruction
  1681.  
  1682. Instruction: FSBP0
  1683.  
  1684. Description:
  1685.     ;   This Instruction set current bank pointer to
  1686.     ; Bank # 0.
  1687.  
  1688.     ;   Each bank contain eight 80bit registers
  1689.     ;   There are 3 banks (0,1,2) in Chip
  1690.  
  1691.     ;   After initialization FPU select bank # 0.
  1692.  
  1693.  
  1694. FPU Flags Affected:  None
  1695.  
  1696. FPU mode: Any
  1697.  
  1698. Physical Form:         FSBP0
  1699. COP (Code of Operation): DBH E8H
  1700. Clocks:       IIT 2c87    : 6
  1701.        IIT 3c87    : 6
  1702.        IIT 3c87SX  : 6
  1703.  
  1704.  
  1705. ---------------------------------------------------
  1706. FSBP1 - FPU: Set Bank pointer to Bank # 1
  1707.  
  1708.  
  1709.  
  1710. FPU:  IIT FPUs.
  1711. Type of Instruction: FPU instruction
  1712.  
  1713. Instruction: FSBP1
  1714.  
  1715. Description:
  1716.     ;   This Instruction set current bank pointer to
  1717.     ; Bank # 1.
  1718.  
  1719.     ;   Each bank contain eight 80bit registers
  1720.     ;   There are 3 banks (0,1,2) in Chip
  1721.  
  1722.     ;   After initialization FPU select bank # 0.
  1723.  
  1724.  
  1725. FPU Flags Affected:  None
  1726.  
  1727. FPU mode: Any
  1728.  
  1729. Physical Form:         FSBP1
  1730. COP (Code of Operation): DBH EBH
  1731. Clocks:       IIT 2c87    : 6
  1732.        IIT 3c87    : 6
  1733.        IIT 3c87SX  : 6
  1734.  
  1735.  
  1736. ---------------------------------------------------
  1737. FSBP2 - FPU: Set Bank pointer to Bank # 2
  1738.  
  1739.  
  1740.  
  1741. FPU:  IIT FPUs.
  1742. Type of Instruction: FPU instruction
  1743.  
  1744. Instruction: FSBP2
  1745.  
  1746. Description:
  1747.     ;   This Instruction set current bank pointer to
  1748.     ; Bank # 2.
  1749.  
  1750.     ;   Each bank contain eight 80bit registers
  1751.     ;   There are 3 banks (0,1,2) in Chip
  1752.  
  1753.     ;   After initialization FPU select bank # 0.
  1754.  
  1755.  
  1756. FPU Flags Affected:  None
  1757.  
  1758. FPU mode: Any
  1759.  
  1760. Physical Form:         FSBP2
  1761. COP (Code of Operation): DBH EAH
  1762. Clocks:       IIT 2c87    : 6
  1763.        IIT 3c87    : 6
  1764.        IIT 3c87SX  : 6
  1765.  
  1766.  
  1767. ---------------------------------------------------
  1768. IBTS    -  Insert Bits String
  1769.  
  1770.  
  1771. CPU:  80386 step A0-B0 only
  1772. Type of Instruction: User
  1773.  
  1774. Instruction:  IBTS base,bitoffset,len,sorc
  1775.  
  1776.  
  1777. Description:
  1778.          Write bit string length <len> bits from
  1779.          <sorc> [bits <len> .. 0 ]    (lowest bits) to bitfield,
  1780.          defined by <base> and bitsoffset <bitoffset> from this base
  1781.          to start of the field to write. String write from this start
  1782.          field bit to higher memory addresses or register bits.
  1783.  
  1784.  
  1785.  
  1786. Flags Affected: None
  1787.  
  1788. CPU mode: RM,PM,VM
  1789.  
  1790. +++++++++++++++++++++++
  1791. Physical Form:      IBTS    r/m16,AX,CL,r16
  1792.           IBTS    r/m32,EAX,CL,r32
  1793. COP (Code of Operation)     : 0FH A7H Postbyte
  1794.  
  1795. Clocks:        IBTS
  1796. 80386:        12/19
  1797.  
  1798.  
  1799.  
  1800. ---------------------------------------------------
  1801. ICEBP  - PWI Mode BreakPoint, ICE address space
  1802.  
  1803.  
  1804.  
  1805. CPU:  IBM 486SLC2
  1806. Type of Instruction: System
  1807.  
  1808. Instruction: ICEBP
  1809.  
  1810. Description:
  1811.     IF (condition) THEN  ; see condition below
  1812.            {
  1813.            SAVE STATUS OF EXECUTION TO ICE space;
  1814.            ENTER SMM;
  1815.            }
  1816.        ELSE
  1817.           {
  1818.           INT 1;
  1819.           }
  1820.        END
  1821.  
  1822. Note:    This condition can be set before execution this instruction:
  1823.     CPL=0
  1824.     MSR1000H.EPCEA=1
  1825.     MSR1000H.EPWI=1
  1826.  
  1827.  
  1828.  
  1829. Flags Affected: None
  1830.  
  1831. CPU mode: RM,PM0
  1832.  
  1833. Physical Form:         ICEBP
  1834. COP (Code of Operation): F1H
  1835. Clocks:     IBM 486SLC2   : 460
  1836.  
  1837.  
  1838. ---------------------------------------------------
  1839. ICEBP  -  In-Circuit Emulator Breakpoint
  1840.  
  1841.  
  1842.  
  1843. CPU:  some models of i486, i386
  1844. Type of Instruction: System
  1845.  
  1846. Instruction: ICEBP
  1847.  
  1848. Description:
  1849.     IF (condition) THEN  ; see condition below
  1850.            {
  1851.            CHANGED TO THE ICE instruction mode;
  1852.            }
  1853.        ELSE
  1854.           {
  1855.           INT 1;
  1856.           }
  1857.        END
  1858.  
  1859. Note:    Condition  is  DR7.bit12=1
  1860.  
  1861. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  1862.       but it generate never int 3, but int 1.
  1863.  
  1864. Note: Frank van Gilluwe in his book "The PC Undocument", 1994 year say
  1865.       that this instruction is VERY UNDOCUMENT.
  1866.  
  1867. Flags Affected: None
  1868.  
  1869. CPU mode: RM,PM0
  1870.  
  1871. Physical Form:         ICEBP
  1872. COP (Code of Operation): F1H
  1873. Clocks:               : N/A
  1874.  
  1875.  
  1876.  
  1877. ---------------------------------------------------
  1878. ICERET    - Return from PWI mode, ICE space
  1879.  
  1880.  
  1881. CPU: IBM 486SLC2
  1882. Type of Instruction: System Operation
  1883.             (Work only then CPL=0)
  1884.  
  1885. Instruction: ICERET
  1886.  
  1887. Description:
  1888.           Load All Registers (Include Shadow Registers) from Table
  1889.           Which Begin on  place pointed ES:EDI, and return from PWI
  1890.           mode.
  1891.  
  1892. Format of ICERET Table:
  1893.  
  1894.            Offset  Len  Description
  1895.         0H    4    CR0
  1896.         4H    4    EFLAGS
  1897.         8H    4    EIP
  1898.         CH    4    EDI
  1899.         10H    4    ESI
  1900.         14H    4    EBP
  1901.         18H    4    ESP
  1902.         1CH    4    EBX
  1903.         20H    4    EDX
  1904.         24H    4    ESX
  1905.         28H    4    EAX
  1906.         2CH    4    DR6
  1907.         30H    4    DR7
  1908.         34H    4    TR     (16 bit, zero filled up)
  1909.         38H    4    LDT  ---------
  1910.         3CH    4    GS   ---------
  1911.         40H    4    FS   ---------
  1912.         44H    4    DS   ---------
  1913.         48H    4    SS   ---------
  1914.         4CH    4    CS   ---------
  1915.         50H    4    ES   ---------
  1916.         54H    4    TSS.attrib
  1917.         58H    4    TSS.base
  1918.         5CH    4    TSS.limit
  1919.         60H    4    Reserved
  1920.         64H    4    IDT.base
  1921.         68H    4    IDT.limit
  1922.         6CH    4    REP OUTS overrun flag
  1923.         70H    4    GDT.base
  1924.         74H    4    GDT.limit
  1925.         78H    4    LDT.attrib
  1926.         7CH    4    LDT.base
  1927.         80H    4    LDT.limit
  1928.         84H    4    GS.attrib
  1929.         88H    4    GS.base
  1930.         8CH    4    GS.limit
  1931.         90H    4    FS.attrib
  1932.         94H    4    FS.base
  1933.         98H    4    FS.limit
  1934.         9CH    4    DS.attrib
  1935.         A0H    4    DS.base
  1936.         A4H    4    DS.limit
  1937.         A8H    4    SS.attrib
  1938.         ACH    4    SS.base
  1939.         B0H    4    SS.limit
  1940.         B4H    4    CS.attrib
  1941.         B8H    4    CS.base
  1942.         BCH    4    CS.limit
  1943.         C0H    4    ES.attrib
  1944.         C4H    4    ES.base
  1945.         C8H    4    ES.limit
  1946.                 Unknown Unusable area
  1947.                 ;; Temporary registers:
  1948.         100H    4    TST
  1949.         104H    4    IDX
  1950.         108H    4    TMPH
  1951.         10CH    4    TMPG
  1952.         110H    4    TMPF
  1953.         114H    4    TMPE
  1954.         118H    4    TMPD
  1955.         11CH    4    TMPC
  1956.         120H    4    TMPB
  1957.         124H    4    TMPA
  1958.  
  1959.         128H    4    CR2
  1960.         12CH    4    CR3
  1961.         130H    4    MSR1001H (31-0)
  1962.         134H    4    MSR1001H (63-32)
  1963.         138H    4    MSR1000H (15-0)
  1964.         13CH    4    DR0
  1965.         140H    4    DR1
  1966.         144H    4    DR2
  1967.         148H    4    DR3
  1968.         14CH    4    PEIP
  1969.         Length of table is 150H bytes.
  1970.  
  1971. Note: For descriptor format refer to LOADALL and RES3 instructions.
  1972.  
  1973.  
  1974. Flags Affected: All (FLAGS Register Reload)
  1975.  
  1976. CPU mode: SMM
  1977.  
  1978. Physical Form:         ICERET
  1979. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1980. Clocks:     IBM 486SLC2   : 440
  1981.  
  1982.  
  1983.  
  1984. ---------------------------------------------------
  1985. INS  -    Insert Bit String
  1986.  
  1987.  
  1988. CPU: NEC/Sony  all V-series
  1989. Type of Instruction: User
  1990.  
  1991. Instruction:  INS  start,len
  1992.  
  1993.  
  1994. Description:
  1995.       BitField [         BASE =  ES:DI
  1996.          START BIT OFFSET =  start
  1997.                LENGTH =  len
  1998.              ]   <-     AX [ bits= (len-1)..0]
  1999.  
  2000.  
  2001. Note:    di and start automatically UPDATE
  2002. Note:    Alternative Name of this instruction is NECINS
  2003.  
  2004. Flags Affected: None
  2005.  
  2006. CPU mode: RM
  2007.  
  2008. +++++++++++++++++++++++
  2009. Physical Form         : INS    reg8,reg8
  2010. COP (Code of Operation)     : 0FH 31H  PostByte
  2011.  
  2012.  
  2013. Clocks:        INS  reg8,reg8
  2014. NEC V20:    31-117
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021. ---------------------------------------------------
  2022. INVD  - Invalidate Cache Buffer
  2023.  
  2024.  
  2025.  
  2026. CPU:  I486 +
  2027. Type of Instruction: System
  2028.  
  2029. Instruction: INVD
  2030.  
  2031. Description:
  2032.          FLUSH INTERNAL CACHE
  2033.    ( It means that all lines of internal caches sets as
  2034.     invalid )
  2035.      SIGNAL EXTERNAL CACHE TO FLUSH
  2036.  
  2037.  
  2038. Notes: This instruction not work in Real Mode and  in
  2039. Protected mode work only in ring 0 ;
  2040.  
  2041. Flags Affected: None
  2042.  
  2043. CPU mode: PM0,SMM?
  2044.  
  2045. Physical Form:         INVD
  2046. COP (Code of Operation): 0FH 08H
  2047. Clocks: Cyrix Cx486SLC : 4
  2048.           i486     : 4
  2049.           Pentium  : 15
  2050.  
  2051.  
  2052. ---------------------------------------------------
  2053. INVLPG    - Invalidate Page Entry In TLB
  2054.  
  2055.  
  2056.  
  2057. CPU:  I486 +
  2058. Type of Instruction: System
  2059.  
  2060. Instruction: INVLPG mem
  2061.  
  2062. Description:
  2063.     IF found in data or code (if both) (or common if single)
  2064.        TLB entry with linear address (page part) same as
  2065.        memory operand <mem> then mark this entry as Invalid;
  2066.  
  2067. Notes: This instruction not work in Real Mode and  in
  2068. Protected mode work only in ring 0 ;
  2069.  
  2070. Flags Affected: None
  2071.  
  2072. CPU mode: RM,PM,VM,SMM
  2073.  
  2074. Physical Form:         INVLPG mem
  2075. COP (Code of Operation): 0FH 01H mm111mmm
  2076. Clocks: Cyrix Cx486SLC : 4
  2077.           i486     : 12 if hit
  2078.                : 11 if not hit
  2079.           Pentium  : 25
  2080.  
  2081. ---------------------------------------------------
  2082. LOADALL     - Load All Registers
  2083.  
  2084.  
  2085. CPU:  Intel 386+ +all clones
  2086.  
  2087. Type of Instruction: System
  2088.             (Work only then CPL=0)
  2089.  
  2090. Instruction: LOADALL
  2091.  
  2092. Description:
  2093.           Load All Registers (Include Shadow Registers) from Table
  2094.           Which Begin on  place pointed ES:EDI
  2095.  
  2096. Format of LOADALL Table:
  2097.  
  2098.            Offset  Len  Description
  2099.         0H    4    CR0
  2100.         4H    4    EFLAGS
  2101.         8H    4    EIP
  2102.         CH    4    EDI
  2103.         10H    4    ESI
  2104.         14H    4    EBP
  2105.         18H    4    ESP
  2106.         1CH    4    EBX
  2107.         20H    4    EDX
  2108.         24H    4    ESX
  2109.         28H    4    EAX
  2110.         2CH    4    DR6
  2111.         30H    4    DR7
  2112.         34H    4    TR     (16 bit, zero filled up)
  2113.         38H    4    LDT  ---------
  2114.         3CH    4    GS   ---------
  2115.         40H    4    FS   ---------
  2116.         44H    4    DS   ---------
  2117.         48H    4    SS   ---------
  2118.         4CH    4    CS   ---------
  2119.         50H    4    ES   ---------
  2120.         54H    4    TSS.attrib
  2121.         58H    4    TSS.base
  2122.         5CH    4    TSS.limit
  2123.         60H    4    0s
  2124.         64H    4    IDT.base
  2125.         68H    4    IDT.limit
  2126.         6CH    4    0s
  2127.         70H    4    GDT.base
  2128.         74H    4    GDT.limit
  2129.         78H    4    LDT.attrib
  2130.         7CH    4    LDT.base
  2131.         80H    4    LDT.limit
  2132.         84H    4    GS.attrib
  2133.         88H    4    GS.base
  2134.         8CH    4    GS.limit
  2135.         90H    4    FS.attrib
  2136.         94H    4    FS.base
  2137.         98H    4    FS.limit
  2138.         9CH    4    DS.attrib
  2139.         A0H    4    DS.base
  2140.         A4H    4    DS.limit
  2141.         A8H    4    SS.attrib
  2142.         ACH    4    SS.base
  2143.         B0H    4    SS.limit
  2144.         B4H    4    CS.attrib
  2145.         B8H    4    CS.base
  2146.         BCH    4    CS.limit
  2147.         C0H    4    ES.attrib
  2148.         C4H    4    ES.base
  2149.         C8H    4    ES.limit
  2150.         CCH    4    Length of table
  2151.         D0H    30h    Unused,not loaded
  2152.         100H    4    Temporary Register IST
  2153.         104H    4    Temporary Register I
  2154.         108H    4    Temporary Register H
  2155.         10CH    4    Temporary Register G
  2156.         110H    4    Temporary Register F
  2157.         114H    4    Temporary Register E
  2158.         118H    4    Temporary Register D
  2159.         11CH    4    Temporary Register C
  2160.         120H    4    Temporary Register B
  2161.         124H    4    Temporary Register A
  2162.  
  2163.  
  2164.  
  2165. Format    of Attrib field:
  2166.  
  2167.            Byte    Description
  2168.            0    0s
  2169.            1    AR (Access Right) byte in the Descriptor format
  2170.             Note:
  2171.                P bit is a valid bit
  2172.                if valid bit=0 then Shadow Register is invalid and
  2173.                   INT 0DH - General Protection Fault call
  2174.                DPL of SS,CS det. CPL
  2175.            2-3    0s
  2176.  
  2177.  
  2178. Flags Affected: All (FLAGS Register Reload)
  2179.  
  2180. CPU mode: RM,PM0
  2181.  
  2182. Physical Form:         LOADALL
  2183. COP (Code of Operation): 0FH 07H
  2184. Clocks:          i386XX   : n/a
  2185.           i486XX   : n/a
  2186.  
  2187. Note: This operation used 102 data transfer cycles on 32bit bus
  2188.       Typical clocks:
  2189.           i386SX: ~350
  2190.           i386DX: ~290
  2191.           i486XX: ~220
  2192.  
  2193.  
  2194.  
  2195. ---------------------------------------------------
  2196. LOADALL     - Load All Registers From Table
  2197.  
  2198.  
  2199. CPU:  Intel 80286 and all its clones
  2200.  
  2201. Type of Instruction: System
  2202.             (Work only then CPL=0)
  2203.  
  2204. Instruction: LOADALL
  2205.  
  2206. Description:
  2207.           Load All Registers (Include Shadow Registers) from Table
  2208.           Which Begin on  000800H  Address, Len of this table is
  2209.           66H
  2210.  
  2211. Format of LOADALL Table:
  2212.  
  2213.            Address    Len  Description
  2214.         800H    6    None
  2215.         806H    2    MSW
  2216.         808H    14    None
  2217.         816H    2    TR
  2218.         818H    2    FLAGS
  2219.         81AH    2    IP
  2220.         81CH    2    LDTR
  2221.         81EH    2    DS
  2222.         820H    2    SS
  2223.         822H    2    CS
  2224.         824H    2    ES
  2225.         826H    2    DI
  2226.         828H    2    SI
  2227.         82AH    2    BP
  2228.         82CH    2    SP
  2229.         82EH    2    BX
  2230.         830H    2    DX
  2231.         832H    2    CX
  2232.         834H    2    AX
  2233.         836H    6    ES Shadow Descriptor
  2234.         83CH    6    CS Shadow Descriptor
  2235.         842H    6    SS Shadow Descriptor
  2236.         848H    6    DS Shadow Descriptor
  2237.         84EH    6    GDTR
  2238.         854H    6    LDT Shadow Descriptor
  2239.         85AH    6    IDTR
  2240.         860H    6    TSS Shadow Descriptor
  2241.  
  2242. Format    of Shadow Descriptor:
  2243.  
  2244.            Byte    Description
  2245.            0-2    24bit Phisical Address
  2246.         3    AR (Access Right) byte
  2247.            4-5    16bit Segment Limit
  2248.  
  2249.  
  2250. Format    of GDTR and IDTR:
  2251.  
  2252.            Byte    Description
  2253.            0-2    24bit Phisical Address
  2254.         3    0s
  2255.            4-5    16bit Segment Limit
  2256.  
  2257.  
  2258. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  2259. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never  support this
  2260. instruction.
  2261.  
  2262.  
  2263. Flags Affected: All (FLAGS Register Reload)
  2264.  
  2265. CPU mode: RM,PM0
  2266.  
  2267. Physical Form:         LOADALL
  2268. COP (Code of Operation): 0FH 05H
  2269. Clocks:          80286    : 195
  2270.  
  2271.  
  2272. ---------------------------------------------------
  2273. MOVSPA      -  Move Stack Pointer After Bank Switched
  2274.  
  2275. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2276. Type of Instruction: System
  2277.  
  2278. Instruction:  MOVSPA
  2279.  
  2280.  
  2281. Description:  This instruction transfer     both SS and SP     of the old register
  2282.           bank to new register bank after the bank has been switched by
  2283.           interrupt or BRKCS instruction.
  2284.  
  2285.  
  2286.  
  2287.  
  2288. Flags Affected:     None
  2289.  
  2290. CPU mode: RM
  2291.  
  2292. +++++++++++++++++++++++
  2293. Physical Form:    MOVSPA
  2294. COP (Code of Operation)     : 0Fh 25h
  2295.  
  2296. Clocks:     16
  2297.  
  2298.  
  2299.  
  2300. ---------------------------------------------------
  2301. MOVSPB      -  Move Stack Pointer Before Bamk Switching
  2302.  
  2303. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2304. Type of Instruction: System
  2305.  
  2306. Instruction:  MOVSPB  Number_of_bank
  2307.  
  2308.  
  2309. Description:  The MOVSPB instruction transfers the current SP and SS before
  2310.           the bank switching to new register bank.
  2311.  
  2312. Note:          New Register Bank Number indicated by lower 3bit of Number_of_
  2313.           _bank.
  2314.  
  2315. Note:          See BRKCS instruction for more info about banks.
  2316.  
  2317.  
  2318. Flags Affected:     None
  2319.  
  2320. CPU mode: RM
  2321.  
  2322. +++++++++++++++++++++++
  2323. Physical Form:    MOVSPB      reg16
  2324. COP (Code of Operation)     : 0Fh 95h <1111 1RRR>
  2325.  
  2326. Clocks:     11
  2327.  
  2328.  
  2329.  
  2330. ---------------------------------------------------
  2331. NOT1  -     Invert a Specified bit
  2332.  
  2333.  
  2334. CPU: NEC/Sony  all  V-series
  2335. Type of Instruction: User
  2336.  
  2337. Instruction:  NOT1 dest,bitnumb
  2338.  
  2339.  
  2340. Description:
  2341.         (BIT bitnumb OF dest) <-  NOT (BIT bitnumb OF dest);
  2342.  
  2343.  
  2344.  
  2345. Flags Affected: None
  2346.  
  2347.  
  2348. CPU mode: RM
  2349.  
  2350. +++++++++++++++++++++++
  2351. Physical Form:           NOT1 reg/mem8,CL
  2352. COP (Code of Operation)     : 0FH 16H  Postbyte
  2353.  
  2354. Physical Form:           NOT1 reg/mem8,imm8
  2355. COP (Code of Operation)     : 0FH 1EH  Postbyte imm8
  2356.  
  2357. Physical Form:           NOT1 reg/mem16,CL
  2358. COP (Code of Operation)     : 0FH 17H  Postbyte
  2359.  
  2360. Physical Form:           NOT1 reg/mem16,imm8
  2361. COP (Code of Operation)     : 0FH 1FH  Postbyte  imm8
  2362.  
  2363.  
  2364. Clocks:                 NOT1
  2365.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  2366. NEC V20:      4/18     5/19          4/18         5/19
  2367.  
  2368.  
  2369.  
  2370. ---------------------------------------------------
  2371. RDMSR  - Read From Model Specified Register
  2372.  
  2373.  
  2374. CPU:  Pentium (tm), IBM 386SLC,486SLC,486SLC2
  2375. Type of Instruction: System
  2376.  
  2377. Instruction: RDMSR
  2378.  
  2379. Description:
  2380.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  2381.           {
  2382.           EDX:EAX <- MSR [ECX];
  2383.           }
  2384.         ELSE
  2385.           {
  2386.           General Protection Fault  INT 0DH (0)
  2387.           }
  2388.     END
  2389.  
  2390.  
  2391. Valid number Of MSR is:
  2392.     Pentium:  0-2,4-0Eh,10h-13h
  2393.     IBM 486SLC2:  1000H-1002H
  2394.     IBM 386SLC:      1000H-1001H
  2395.     IBM 486SLC:      1000H-1001H
  2396.  
  2397.  
  2398. Flags Affected: None
  2399.  
  2400. CPU mode: RM,PM0,SMM
  2401.  
  2402. Physical Form:         RDMSR
  2403. COP (Code of Operation): 0FH 32H
  2404. Clocks:         Pentium   : 20-24
  2405.  
  2406. Note: The MSR # 3,0fh and >13h are reserved on Pentium.
  2407.       Do not execute RDMSR/WRMSR with this values.
  2408.  
  2409.       Register    Description
  2410.  
  2411.       MSR 0  is Machine check Exception Address register (Read only)
  2412.         (Pentium,Am5k86,Pentium Pro)
  2413.         bits    Description
  2414.         63..32    Reserved
  2415.         31..0    Machine Check Phisical Address
  2416.  
  2417.       MSR 1  is Machine Check Type register (Read Only)
  2418.         (Pentium,Am5k86,Pentium Pro)
  2419.         bits    Description
  2420.         63..5    Reserved
  2421.         5    FERI   (Fun Error Indicator)
  2422.             (Pentium OverDrive Only)
  2423.             initialazed after RESET as 0. If temperature
  2424.             of CHIP > ~75'C then set this bit to 1 and this
  2425.             bit still will 1 before Next RESET.
  2426.             This bit used FANMONIT.EXE utility shipped with
  2427.             PODP5V.
  2428.         4    LOCK
  2429.             =1 if bus cycle called Machine Check was Locked
  2430.             =0 if --//-- not locked (normal)
  2431.         3    M/IO# \
  2432.         2    D/C#     State of output pins in bus cycle called
  2433.         1    W/R#  /     Machine check
  2434.         0    CHK  (Check)
  2435.             =1 after last read MSR 1 was Machine Check
  2436.             Note: This bit Clearing on reading
  2437.  
  2438.         Note: Pentium OverDrive difference
  2439.         5    FERI   (Fun Error Indicator)
  2440.             initialazed after RESET as 0. If temperature
  2441.             of CHIP > ~75'C then set this bit to 1 and this
  2442.             bit still will 1 before Next RESET.
  2443.             This bit used FANMONIT.EXE utility shipped with
  2444.             PODP5V.
  2445.  
  2446.  
  2447.       MSR 2h  is Test Register 1  (Read/Write)
  2448.         (Pentium)
  2449.         Parity Reversal Register (PRR)
  2450.         bits    Description
  2451.         63..14    Reserved  (should be zero)
  2452.         13    MC   (Microcode Parity Error)
  2453.         12    DTD  (data TLB data error)
  2454.         11    DTT  (data TLB tag error)
  2455.         10    DD   (data cache data)
  2456.         9    DT   (data cache tag)
  2457.         8    ITD  (instruction TLB data error)
  2458.         7    ITT  (instruction TLB tag error)
  2459.         6    ID3  (data cache odd bits (255, ..., 129) error)
  2460.         5    ID2  (data cache even bits (254,..., 128) error)
  2461.         4    ID1  (data cache odd bits (127, ..., 1) error)
  2462.         3    ID0  (data cache even bits (126, ..., 0) error)
  2463.         2    IT   (instruction cache TAG)
  2464.         1    NS   (No shutdown)
  2465.                  If = 0 On parity errors set PRR.PES, assert IERR#
  2466.                  and shutdown.
  2467.                  If =1 On parity error set PRR.PES and assert
  2468.                  IERR#
  2469.         0    PES  (Parity Error Summary)
  2470.                  If =1 Parity Error
  2471.                  If =0 Never Parity error
  2472.  
  2473.         Note: bits 13..2, if bit=1 it means that error joined with
  2474.               this bit present.
  2475.  
  2476.       MSR 3h  is  Reserved  (Do not Accessed it)
  2477.  
  2478.  
  2479.       MSR 4h  is Test Register 2 (TR 2) (Read/Write)
  2480.         (Pentium)
  2481.         (Instruction Cache End bits TR)
  2482.         bits    Description
  2483.         63..4    Reserved  (should be zero)
  2484.         3..0    End Bits
  2485.         Note: each bit of End bit correspond to one byte of
  2486.               instruction in TR3 during code testability access.
  2487.               I.c. line size = 32 bytes, 8 accesses are needed for
  2488.               read/write the end bits of cache line.
  2489.               Each of this bits indicated an instruction boundarues
  2490.               If given byte is last byte of instruction then bit
  2491.               joined with this byte =1.
  2492.               Then new line writting into cache all ends bits =1,
  2493.               when line decoding setting bits to 0, except last byte
  2494.               of instruction.
  2495.  
  2496.  
  2497.       MSR 5h  is Test Register 3 (TR 3) (Read/Write)
  2498.         (Pentium)
  2499.         (Cache test Data)
  2500.         bits    Description
  2501.         63..32    Reserved  (should be zero)
  2502.         31..0    Data Reading/Writing from/to {code/data} cache
  2503.  
  2504.       MSR 6h  is Test Register 4 (TR 4) (Read/Write)
  2505.         (Pentium)
  2506.         (Cache Test Tag)
  2507.         bits    Description
  2508.         63..32    Reserved  (should be zero)
  2509.         31..8    Cache Tag [35:12]
  2510.         7..3    Reserved  (should be zero)
  2511.         2    LRU (Last Resently Used)
  2512.             Contain way joined with readed/writed cache line
  2513.         1..0    VALID
  2514.             Contain Valid Status Information
  2515.             [Code Cache (TR5.CD=0)]:
  2516.             VALID[1] VALID[0]   Description
  2517.               x       0       Code cache line is invalid
  2518.               x       1       Code cache line is valid
  2519.             [Data Cache (TR5.CD=1)]:
  2520.             VALID[1] VALID[0]   Description
  2521.               0       0       Data cache line is invalid
  2522.               0       1       Data cache line is shared
  2523.               1       0       Data cache line is exclusive
  2524.               1       1       Data cache line is modified
  2525.  
  2526.       MSR 7h  is Test Register 5 (TR 5) (Read/Write)
  2527.         (Pentium)
  2528.         (Cache Test Control)
  2529.         bits    Description
  2530.         63..15    Reserved  (should be zero)
  2531.         14    WB (Write-back)
  2532.             If = 0    Write-throught
  2533.             If = 1    Write-back
  2534.             see also TR5.CNTRL
  2535.         13    CD (Code/Data)
  2536.             Select Code/Data cache for test operation
  2537.             If = 0 Code cache select
  2538.             If = 1 Data cache select
  2539.         12    ENTRY
  2540.             Specify cache Way
  2541.         11..5    SET
  2542.             Cache Set Number (for Write/then read)
  2543.         4..2    BUFFER SELECT
  2544.             Select one of 8 (4byte) part of cache line
  2545.         1..0    CNTRL (Control)
  2546.             CNTRL[1] CNTRL[0] Description
  2547.               0       0      Normal Operation Mode
  2548.               0       1      Testability Write
  2549.               1       0      Testability Read
  2550.               1       1      Flush
  2551.             Note: Flush actions depends on TR7.WB:
  2552.             TR7.CD    TR7.WB    Description
  2553.               0       x      Invalidate code cache line
  2554.               1       0      Invalidate data cache line, no WB,
  2555.                       if modified
  2556.               1       1      Invalidate data cache line, WB,
  2557.                       if modified
  2558.  
  2559.       MSR 8h  is Test Register 6 (TR 6) (Read/Write)
  2560.         (Pentium)
  2561.         (TLB Command Test Register)
  2562.         bits    Description
  2563.         63..32    Reserved  (should be zero)
  2564.         31..12    LINEAR ADDRESS
  2565.         11    V (Valid)
  2566.             If = 1 valid TLB entry
  2567.             If = 0 invalid TLB entry
  2568.         10    D (Dirty)
  2569.             If = 1 page was write-accessed
  2570.             If = 0 page never was write-accessed
  2571.         9    U (User Mode)
  2572.             If = 0 page may accessed at PL=0,1,2,3
  2573.             If = 1 PL=0 access allowed
  2574.         8    W (Writable)
  2575.             If = 0    Read only page
  2576.             If = 1    Read/Write page
  2577.         7..3    Reserved (should be zero)
  2578.         2    PS (Page Size)
  2579.             If = 0 4KB page
  2580.             If = 1 4MB page
  2581.         1    CD (Code/Data TLB)
  2582.             If = 0 Code TLB
  2583.             If = 1 Data TLB
  2584.         0    OP (Operation)
  2585.             If = 0 TLB Write
  2586.             If = 1 TLB Read
  2587.  
  2588.       MSR 9h  is Test Register 7 (TR 7) (Read/Write)
  2589.         (Pentium)
  2590.         (TLB Test Physical Address)
  2591.         bits    Description
  2592.         63..32    Reserved  (should be zero)
  2593.         31..12    PHYSICAL ADDRESS
  2594.         11    PCD   (Page Cache Disable)
  2595.         10    PWT   (Page Write-Throught)
  2596.         9..7    LRU   (TLB LRU)
  2597.         6..5    Reserved (should be zero)
  2598.         4    H  (Hit Indicator)
  2599.             If we want write into TLB, set this bit to 1.
  2600.             If read, then if linear address found in TLB
  2601.             this bit set to 1, otherwize to 0.
  2602.         3..2    ENTRY
  2603.             One of 4 TLB ways where to write, or where found
  2604.             linear address if read.
  2605.         1..0    Reserved (should be zero)
  2606.  
  2607.       MSR Ah  is  Reserved (Do not Accessed it)
  2608.  
  2609.  
  2610.       MSR Bh  is Test Register 9 (TR 9) (Read/Write)
  2611.         (Pentium)
  2612.         (BTB Test Tag Register)
  2613.         bits    Description
  2614.         63..32    Reserved  (should be zero)
  2615.         31..8    TAG ADDRESS
  2616.         7..2    Reserved  (should be zero)
  2617.         1..0    HISTORY
  2618.             History is state of current branch
  2619.  
  2620.  
  2621.       MSR Ch  is Test Register 10 (TR 10) (Read/Write)
  2622.         (Pentium)
  2623.         (BTB Test Target Register)
  2624.         bits    Description
  2625.         63..32    Reserved  (should be zero)
  2626.         31..0    TARGET ADDRESS
  2627.  
  2628.  
  2629.       MSR Dh  is Test Register 11 (TR 11) (Read/Write)
  2630.         (Pentium)
  2631.         bits    Description
  2632.         63..12    Reserved  (should be zero)
  2633.         11..8    BTB SET
  2634.             Select one of 64 set to access
  2635.         7..4    Reserved  (should be zero)
  2636.         3..2    ENTRY
  2637.             select BTB way
  2638.         1..0    CNTL
  2639.             Command to Test BTB
  2640.             CNTL[1]     CNTL[0]  Description
  2641.               0       0     Normal Operating Mode
  2642.               0       1     Testability Write
  2643.               1       0     Testability Read
  2644.               1       1     Flush
  2645.  
  2646.  
  2647.       MSR Eh  is Test Register 12 (TR 12) (Read/Write)
  2648.         (Pentium)
  2649.         (New Feature Control)
  2650.         bits    Description
  2651.         63..3    Reserved  (should be zero)
  2652.         3    CI (Cache Inhibit)
  2653.             if =0 chip operated normally
  2654.                =1 then all cache line fill are inhibited,
  2655.                   and bus cycles due to cache misses are
  2656.                   run as single-transfer cycles
  2657.         2    SE (Single-Pipe Execution)
  2658.             If =0 instruction executed in U and V pipes.
  2659.                =1 instruction executed only in U pipe
  2660.         1    TR (Tracing Control)
  2661.             After reset clear to zero.
  2662.             This bit enable/disable special branch trace
  2663.             message cycle which generating when BTB hit.
  2664.             =0 disable
  2665.             =1 enable
  2666.         0    NBP  (No Branch prediction)
  2667.             If = 1 Disable Allocated entryes in BTB
  2668.             If = 0 Enable
  2669.  
  2670.       MSR Fh is Reserved (Not use it)
  2671.  
  2672.  
  2673.  
  2674. Global Note:
  2675.     Unfortuantly, More Information about MSR Features is Intel Secret.
  2676.     If You want get more Info, request Your Local Intel Office.
  2677.     Document you need named:
  2678.     Supplement to the Pentium(tm) Processor User's Manual.
  2679.  
  2680.  
  2681.       MSR 10h is Time Stamp Counter  (TSC) (Read/Write)
  2682.         (Pentium,Am5k86,Pentium Pro)
  2683.         Time Stamp Counter (as all other MSRs) is clearing to 0 when
  2684.         RESET pin shutdown and unchanged when INIT pin shutdown.
  2685.         TSC is incremented every CPU core clock cycle.
  2686.  
  2687.       MSR 11h is Control/Event Select Register (CESR) (Read/Write)
  2688.         (Pentium)
  2689.         Init value after reset = 00000000000000000h
  2690.         bits    Description
  2691.         63..26    Reserved
  2692.         25    PC1  (Pin Control, counter #1)
  2693.             If =0 counter # 1 has incremented
  2694.             If =1 counter # 1 has overflowed
  2695.         24..22    CC1  (Counter #1 Control)
  2696.             CC[2] CC[1] CC[0]  Description
  2697.               0    0     0       Counting nothing
  2698.               0    0     1       Counting events while in PL=0,1,2
  2699.               0    1     0       Counting events while in PL =3
  2700.               0    1     1       Counting events in any PL
  2701.               1    0     0       Counting nothing
  2702.               1    0     1       Counting clocks (like TSC) in PL=0..2
  2703.               1    1     0       Counting clocks in PL=3
  2704.               1    1     1       Counting clocks at any PL
  2705.         21..16    ES1  (Event Select, counter # 1)
  2706.             (see below)
  2707.         15..10     Reserved
  2708.         9    PC0 (see PC1 for description)
  2709.         8..6    CC0 (see CC1 for description
  2710.         5..0    ES0 (Event select, counter # 0)
  2711.             Event Type for ES
  2712.             Value    Event Type
  2713.             00h    Data Read
  2714.             01h    Data Write
  2715.             02h    Data TLB miss
  2716.             03h    Data Read Miss
  2717.             04h    Data Write miss
  2718.             05h    Write hit to Modified or Exclusive Cacheline
  2719.             06h    Data cache lines written back
  2720.             07h    Data cache snoops
  2721.             08h    Data cache snoops hit
  2722.             09h    Memory access in both pipes
  2723.             0Ah    Data bank access conflict
  2724.             0Bh    Misaligned data memory references
  2725.             0Ch    Code read
  2726.             0Dh    Code TLB miss
  2727.             0Eh    Code cache miss
  2728.             0Fh    Any segment register load
  2729.             10h    Segment descriptor cache accessed
  2730.             11h    Segment descriptor cache hit
  2731.             12h    Branches
  2732.             13h    BTB hit
  2733.             14h    Taken branch or BTB hit
  2734.             15h    Pipeline flushes
  2735.             16h    Instructions executed
  2736.             17h    Instruction executed in V pipes
  2737.             18h    Bus utilization
  2738.             19h    Pipeline stalled by write backups
  2739.             1Ah    Pipeline stalled by data memory read
  2740.             1Bh    Pipeline stalled by write to M or E line
  2741.             1Ch    Locked bus cycle
  2742.             1Dh    I/O cycle
  2743.             1Eh    Noncachable memory references
  2744.             1Fh    Pipeline stalled by AGI
  2745.             20h-21h Reserved
  2746.             22h    FP operations
  2747.             23h    Breakpoint 0 match
  2748.             24h    Breakpoint 1 match
  2749.             25h    Breakpoint 2 match
  2750.             26h    Breakpoint 3 match
  2751.             27h    Hardware interrupt
  2752.             28h    Data read or data write
  2753.             29h    Data read/write miss
  2754.             2Ah-3Fh Reserved
  2755.  
  2756.  
  2757.       MSR 12h is Counter #0 (Read/Write)
  2758.         (Pentium)
  2759.         bits    Description
  2760.         63..40    Reserved
  2761.         39..0    Current counter value
  2762.  
  2763.       MSR 13h is Counter #1 (Read/Write)
  2764.         (Pentium)
  2765.         bits    Description
  2766.         63..40    Reserved
  2767.         39..0    Current counter value
  2768.  
  2769.       MSR 1Bh is APIC Base
  2770.         (Pentium Pro)
  2771.  
  2772.  
  2773.       MSR 2Ah  is EBL_CR_POWERON
  2774.         (Pentium Pro)
  2775.  
  2776.       MSR 79h  is BIOS_UPDT_TRIG
  2777.         (Pentium Pro)
  2778.  
  2779.       MSR 82h  is Array Access Register (AAR)
  2780.         (Am5k86)
  2781.         63..32    Array pointer
  2782.             Pointer     Description
  2783.             E0h     Data cache: data
  2784.             E1h     Data cache: Linear Tag
  2785.             E4h     Code cache: Instruction
  2786.             E5h     Code Cache: Linear Tag
  2787.             E6h     Code Cache: Valid Bits
  2788.             E7h     Code cache: Branch-prediction bits
  2789.             E8h     4K TLB: Page
  2790.             E9h     4K TLB: Linear Tag
  2791.             EAh     4M TLB: Page
  2792.             EBh     4M TLB: Linear Tag
  2793.             ECh     Data cache: Physical tag
  2794.             EDh     Code cache: Physical Tag
  2795.         31..0    Array Data
  2796.         Note:
  2797.              READ DATA:
  2798.             mov ecx,82h
  2799.             mov    edx,Array Pointer
  2800.             rdmsr
  2801.             ; in EAX - 32bit data
  2802.              WRITE DATA:
  2803.             mov ecx,82h
  2804.             mov    edx,Array Pointer
  2805.             mov    eax,data
  2806.             wrmsr
  2807.         Note: Detailed format of array data will be placed
  2808.               into one of next versions
  2809.  
  2810.       MSR 83h  is Hardware Configuration register (HWCR)
  2811.         (Am5k86)
  2812.         bits    Description
  2813.         63..8    Reserved
  2814.         7    DDC (Disable Data Cache)
  2815.         6    DIC (Disable Instruction Cache)
  2816.         5    DBP (Disable Branch Prediction)
  2817.         4    Reserved
  2818.         3..1    Debug Control
  2819.             000 Off
  2820.             001 Enable branch trace
  2821.             100 Enable Probe mode on debug trap
  2822.         0    DSPC (Disable Stopping Processor Clock)
  2823.  
  2824.       MSR 8Bh  is BIOS_SIGN
  2825.         (Pentium Pro)
  2826.  
  2827.       MSR C1h  is PERFCTR0
  2828.         (Pentium Pro)
  2829.  
  2830.       MSR C2h  is PERFCTR1
  2831.         (Pentium Pro)
  2832.  
  2833.       MSR FEh  is MTRRcap
  2834.         (Pentium Pro)
  2835.  
  2836.       MSR 179h    is MCG_CAP
  2837.         (Pentium Pro)
  2838.  
  2839.       MSR 17Ah    is MCG_STATUS
  2840.         (Pentium Pro)
  2841.  
  2842.       MSR 17Bh    is MCG_CTL
  2843.         (Pentium Pro)
  2844.  
  2845.       MSR 186h    is EVNTSEL0
  2846.         (Pentium Pro)
  2847.  
  2848.       MSR 187h    is EVNTSEL1
  2849.         (Pentium Pro)
  2850.  
  2851.       MSR 1D9h    is DEBUGCTLMSR
  2852.         (Pentium Pro)
  2853.  
  2854.       etc. vary many other Pentium Pro MSRs
  2855.  
  2856. Note: Updating of this section in progress now.
  2857.       So full info will be in next version.
  2858.  
  2859.  
  2860. Here ended Pentium MSRs and Starting IBM MSRs.
  2861.  
  2862.       MSR 1000H is Processor Operation Register (IBM only)
  2863.         (486SLC/486SLC2/386SLC)
  2864.         bits    Description
  2865.         63..19    Reserved
  2866.         18    LWPLA (Low Power PLA) (reserved on IBM 386SLC)
  2867.         17    BUSRD (Bus Read)      (reserved on IBM 386SLC)
  2868.         16    CPGE  (Cache Parity Generate Error)
  2869.             (reserved on IBM 386SLC)
  2870.         15    ECNPX (Enable cachebility of NPX operands)
  2871.         14    EPWIA (Enable PWI ADS)
  2872.         13    ELPWH (Enable Low Power Halt Mode)
  2873.         12    XTOUT (Extend Out Instruction)
  2874.         11    CRLD  (Cache reload bit)
  2875.         10    EIKEN (Enable internal KEN#)
  2876.         9    DSCL  (Disable cache Lock Mode)
  2877.         8    Reserved
  2878.         7    CE     (Cache enable)
  2879.         6    EDBS   (Enable DBCS)
  2880.         5    EPWI   (Enable Power Interrupt)
  2881.         4    EFSP   (Enable Flush Snooping)
  2882.         3    ENSP   (Enable Snoop Input)
  2883.         2    A20M   (Address line 20 Mask)
  2884.         1    CPCE   (Cache Parity Checking Enable)
  2885.         0    CPE    (Cache Parity Error)
  2886.  
  2887.       MSR 1001H is Cache Region Control Register  (IBM only)
  2888.         ( IBM 386SLC/486SLC/486SLC2)
  2889.         bits    description
  2890.         63..40    Reserved
  2891.         39..32    Cache Memory Limit (CMLR)
  2892.         31..16    1st MB Read Only (LMROR)
  2893.         15..0    1st MB Cachable (LMCR)
  2894.  
  2895.       MSR 1002H is processor operation register (IBM only)
  2896.         (IBM 486SLC2 only)
  2897.         bits    description
  2898.         63..30    Reserved
  2899.         29    EEDFS (Enable External Dynamic Frequency Shift)
  2900.         28    DFSRY (Dynamic Frequency Shift Ready)
  2901.         27    DFSMD (Dynamic Frequency Shift Mode)
  2902.         26..24    CLKMD (Clock Mode)
  2903.             =000    x2
  2904.             =011    x1
  2905.         23..0    Reserved
  2906.  
  2907.  
  2908. Note: IBM MSRs documented in "486SLC2 (tm) Microprocessor Data Sheet"
  2909. (IBM Corp. 1993,Order number: VT05452)
  2910.  
  2911.  
  2912. ---------------------------------------------------
  2913. RDPMC  - Read Perfomance Monitoring Counters
  2914.  
  2915.  
  2916. CPU:  Pentium (tm) Pro    (P6)
  2917. Type of Instruction: User
  2918.  
  2919. Instruction: RDPMC
  2920.  
  2921. Description:
  2922.     IF ((CPL<>0) AND (CR4.PCE==0))
  2923.     THEN { INT D (0) ; GENERAL PROTECTION FAULT }
  2924.     ELSE { EDX:EAX <- PERFOMANCE_MONITORING_REGISTER[ECX] }
  2925.     Note: Valid ECX values is 0,1.
  2926.           Invalid ECX values call INT D(0)
  2927.  
  2928.  
  2929. Note:  CR4.PSE = bit 8 of CR4
  2930.  
  2931. Note: Perfomance Monitoring Registers (PMR) are aliases to some Perfomance
  2932.       Monitoring MSRs:
  2933.  
  2934.       MSR 12h is Counter #0 (Read/Write) (Perfomance Monitoring Counter # 0)
  2935.         bits    Description
  2936.         63..40    Reserved
  2937.         39..0    Current counter value
  2938.  
  2939.       MSR 13h is Counter #1 (Read/Write) (Perfomance Monitoring Counter # 1)
  2940.         bits    Description
  2941.         63..40    Reserved
  2942.         39..0    Current counter value
  2943.  
  2944.  
  2945. ++++++++++++++++++++++++++++++++++++++
  2946. COP & Times:
  2947.  
  2948.    RDPMC    0FH 33H
  2949.     P6:     n/a
  2950.  
  2951.  
  2952. ---------------------------------------------------
  2953. RDTSC  - Read From Time Stamp Counter
  2954.  
  2955.  
  2956. CPU:  Pentium (tm)
  2957. Type of Instruction: System/User
  2958.  
  2959. Instruction: RDTSC
  2960.  
  2961. Description:
  2962.     IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0))  THEN
  2963.           {
  2964.           EDX:EAX <- TSC;
  2965.           }
  2966.         ELSE
  2967.           {
  2968.           General Protection Fault  INT 0DH (0)
  2969.           }
  2970.     END
  2971.  
  2972.  
  2973.  
  2974. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  2975. RESET ) it clear to 0000000000000000H.
  2976.       TSC is MSR index 10h. TSC may set using WRMSR instruction.
  2977.       TSC incremented every CPU core clock cycle.
  2978.  
  2979.  
  2980. Flags Affected: None
  2981.  
  2982. CPU mode: RM,PM0,SMM
  2983.       ; PM,VM if enable
  2984.  
  2985. Physical Form:         RDTSC
  2986. COP (Code of Operation): 0FH 31H
  2987. Clocks:         Pentium   : n/a [20-24]
  2988.  
  2989.  
  2990. ---------------------------------------------------
  2991. REPC  - Repeat While Carry Flag
  2992.  
  2993.  
  2994. CPU:  NEC/Sony all V-series
  2995. Type of Instruction: Prefix
  2996.  
  2997. Instruction: REPC
  2998.  
  2999. Description:
  3000.     DO
  3001.          CX=CX-1;
  3002.          SERVICE_PENDING_INTERRUPT;
  3003.          STRING_INSTRUCTION;
  3004.        LOOPWHILE ((CX<>0) AND (CF==1));
  3005.  
  3006.  
  3007. Flags Affected: None
  3008.  
  3009. CPU Mode: RM 8086
  3010.  
  3011. Physical Form:         REPC
  3012. COP (Code of Operation): 65H
  3013. Clocks:          NEC V20  : 2
  3014.           NEC V30  : 2
  3015.  
  3016.  
  3017. ---------------------------------------------------
  3018. REPNC  - Repeat While Not Carry Flag
  3019.  
  3020.  
  3021.  
  3022. CPU:  NEC/Sony all V-series
  3023. Type of Instruction: Prefix
  3024.  
  3025. Instruction: REPNC
  3026.  
  3027. Description:
  3028.     DO
  3029.          CX=CX-1;
  3030.          SERVICE_PENDING_INTERRUPT;
  3031.          STRING_INSTRUCTION;
  3032.        LOOPWHILE ((CX<>0) AND (CF<>1));
  3033.  
  3034.  
  3035. Flags Affected: None
  3036.  
  3037. CPU mode: RM 8086
  3038.  
  3039. Physical Form:         REPNC
  3040. COP (Code of Operation): 64H
  3041. Clocks:          NEC V20  : 2
  3042.           NEC V30  : 2
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049. ---------------------------------------------------
  3050. RES3  - Restore All  CPU Registers
  3051.  
  3052.  
  3053. CPU:  AMD Am386SXLV, Am386DXLV
  3054.  
  3055. Type of Instruction: System Operation
  3056.             (Work only then CPL=0)
  3057.  
  3058. Instruction: RES3
  3059.  
  3060. Description:
  3061.           Load All Registers (Include Shadow Registers) from Table
  3062.           Which Begin on  place pointed ES:EDI
  3063.  
  3064. Note:
  3065.           This instruction is AMD analog Intel's LOADALL instruction
  3066.           but it's more i.c. return from SMM used this instruction.
  3067.  
  3068.           Then in SMM table is in SMRAM, then non SMM then table is
  3069.           in main memory.
  3070.  
  3071. Format of RES3 Table:
  3072.  
  3073.            Offset  Len  Description
  3074.         0H    4    CR0
  3075.         4H    4    EFLAGS
  3076.         8H    4    EIP
  3077.         CH    4    EDI
  3078.         10H    4    ESI
  3079.         14H    4    EBP
  3080.         18H    4    ESP
  3081.         1CH    4    EBX
  3082.         20H    4    EDX
  3083.         24H    4    ESX
  3084.         28H    4    EAX
  3085.         2CH    4    DR6
  3086.         30H    4    DR7
  3087.         34H    4    TR     (16 bit, zero filled up)
  3088.         38H    4    LDT  ---------
  3089.         3CH    4    GS   ---------
  3090.         40H    4    FS   ---------
  3091.         44H    4    DS   ---------
  3092.         48H    4    SS   ---------
  3093.         4CH    4    CS   ---------
  3094.         50H    4    ES   ---------
  3095.         54H    4    TSS.attrib
  3096.         58H    4    TSS.base
  3097.         5CH    4    TSS.limit
  3098.         60H    4    Reserved
  3099.         64H    4    IDT.base
  3100.         68H    4    IDT.limit
  3101.         6CH    4    REP OUTS overrun flag
  3102.         70H    4    GDT.base
  3103.         74H    4    GDT.limit
  3104.         78H    4    LDT.attrib
  3105.         7CH    4    LDT.base
  3106.         80H    4    LDT.limit
  3107.         84H    4    GS.attrib
  3108.         88H    4    GS.base
  3109.         8CH    4    GS.limit
  3110.         90H    4    FS.attrib
  3111.         94H    4    FS.base
  3112.         98H    4    FS.limit
  3113.         9CH    4    DS.attrib
  3114.         A0H    4    DS.base
  3115.         A4H    4    DS.limit
  3116.         A8H    4    SS.attrib
  3117.         ACH    4    SS.base
  3118.         B0H    4    SS.limit
  3119.         B4H    4    CS.attrib
  3120.         B8H    4    CS.base
  3121.         BCH    4    CS.limit
  3122.         C0H    4    ES.attrib
  3123.         C4H    4    ES.base
  3124.         C8H    4    ES.limit
  3125.                 Unknown Unusable area
  3126.         100H    4    Temporary register
  3127.         104H    4    -------------
  3128.         108H    4    -------------
  3129.         10CH    4    -------------
  3130.         110H    4    -------------
  3131.         114H    4    -------------
  3132.         118H    4    -------------
  3133.         11CH    4    -------------
  3134.         120H    4    -------------
  3135.         124H    4    Last EIP (Last instruction EIP for Restart)
  3136.  
  3137. Format    of Attrib field:
  3138.  
  3139.            Byte    Description
  3140.            0    0s
  3141.            1    AR (Access Right) byte in the Descriptor format
  3142.             Note:
  3143.                P bit is a valid bit
  3144.                if valid bit=0 then Shadow Register is invalid and
  3145.                   INT 0DH - General Protection Fault call
  3146.                DPL of SS,CS det. CPL
  3147.            2-3    0s
  3148.  
  3149.  
  3150. Flags Affected: All (FLAGS Register Reload)
  3151.  
  3152. CPU mode: RM,PM0,SMM
  3153.  
  3154. Physical Form:         RES3
  3155. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  3156. Clocks:       Am386SXLV   : 366
  3157.        Am386DXLV   : 291
  3158.  
  3159. ---------------------------------------------------
  3160. RES4  - Restore All  CPU Registers
  3161.  
  3162.  
  3163. CPU:  AMD Am486SXLV, Am486DXLV
  3164.  
  3165. Type of Instruction: System Operation
  3166.             (Work only then CPL=0)
  3167.  
  3168. Instruction: RES3
  3169.  
  3170. Description:
  3171.           Load All Registers (Include Shadow Registers) from Table
  3172.           Which Begin on  place pointed ES:EDI
  3173.  
  3174. Note:
  3175.           This instruction is AMD analog Intel's LOADALL instruction
  3176.           but it's more i.c. return from SMM used this instruction.
  3177.  
  3178.           Then in SMM table is in SMRAM, then non SMM then table is
  3179.           in main memory.
  3180.  
  3181. Format of RES3 Table:
  3182.  
  3183.            Offset  Len  Description
  3184.         0H    4    CR0
  3185.         4H    4    EFLAGS
  3186.         8H    4    EIP
  3187.         CH    4    EDI
  3188.         10H    4    ESI
  3189.         14H    4    EBP
  3190.         18H    4    ESP
  3191.         1CH    4    EBX
  3192.         20H    4    EDX
  3193.         24H    4    ESX
  3194.         28H    4    EAX
  3195.         2CH    4    DR6
  3196.         30H    4    DR7
  3197.         34H    4    TR     (16 bit, zero filled up)
  3198.         38H    4    LDT  ---------
  3199.         3CH    4    GS   ---------
  3200.         40H    4    FS   ---------
  3201.         44H    4    DS   ---------
  3202.         48H    4    SS   ---------
  3203.         4CH    4    CS   ---------
  3204.         50H    4    ES   ---------
  3205.         54H    4    TSS.attrib
  3206.         58H    4    TSS.base
  3207.         5CH    4    TSS.limit
  3208.         60H    4    Reserved
  3209.         64H    4    IDT.base
  3210.         68H    4    IDT.limit
  3211.         6CH    4    REP OUTS overrun flag
  3212.         70H    4    GDT.base
  3213.         74H    4    GDT.limit
  3214.         78H    4    LDT.attrib
  3215.         7CH    4    LDT.base
  3216.         80H    4    LDT.limit
  3217.         84H    4    GS.attrib
  3218.         88H    4    GS.base
  3219.         8CH    4    GS.limit
  3220.         90H    4    FS.attrib
  3221.         94H    4    FS.base
  3222.         98H    4    FS.limit
  3223.         9CH    4    DS.attrib
  3224.         A0H    4    DS.base
  3225.         A4H    4    DS.limit
  3226.         A8H    4    SS.attrib
  3227.         ACH    4    SS.base
  3228.         B0H    4    SS.limit
  3229.         B4H    4    CS.attrib
  3230.         B8H    4    CS.base
  3231.         BCH    4    CS.limit
  3232.         C0H    4    ES.attrib
  3233.         C4H    4    ES.base
  3234.         C8H    4    ES.limit
  3235.                 Unknown Unusable area
  3236.         100H    4    Temporary register
  3237.         104H    4    -------------
  3238.         108H    4    -------------
  3239.         10CH    4    -------------
  3240.         110H    4    -------------
  3241.         114H    4    -------------
  3242.         118H    4    -------------
  3243.         11CH    4    -------------
  3244.         120H    4    -------------
  3245.         124H    4    Last EIP (Last instruction EIP for Restart)
  3246.         128H    4    PEIP - Previous SRAM space instruction pointer
  3247.         12EH    36    Unused
  3248.         150H    22    Floating Pointer Internal Registers (Am486DXLV)
  3249.  
  3250.  
  3251. Format    of Attrib field:
  3252.  
  3253.            Byte    Description
  3254.            0    0s
  3255.            1    AR (Access Right) byte in the Descriptor format
  3256.             Note:
  3257.                P bit is a valid bit
  3258.                if valid bit=0 then Shadow Register is invalid and
  3259.                   INT 0DH - General Protection Fault call
  3260.                DPL of SS,CS det. CPL
  3261.            2-3    0s
  3262.  
  3263.  
  3264. Flags Affected: All (FLAGS Register Reload)
  3265.  
  3266. CPU mode: RM,PM0,SMM
  3267.  
  3268. Physical Form:         RES4
  3269. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  3270. Clocks:       Am486SXLV   : N/A
  3271.  
  3272. ---------------------------------------------------
  3273. RETRBI      -  Return from Register Bank Context
  3274.          Switch  Interrupt.
  3275.  
  3276. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  3277. Type of Instruction: System
  3278.  
  3279. Instruction:  RETRBI
  3280.  
  3281.  
  3282. Description:
  3283.     PC  <- Save PC;
  3284.     PSW <- Save PSW;
  3285.  
  3286.  
  3287.  
  3288.  
  3289. Flags Affected:     All
  3290.  
  3291. CPU mode: RM
  3292.  
  3293. +++++++++++++++++++++++
  3294. Physical Form:    RETRBI
  3295. COP (Code of Operation)     : 0Fh 91h
  3296.  
  3297. Clocks:     12
  3298.  
  3299.  
  3300.  
  3301. ---------------------------------------------------
  3302. RETXA    -  Return from    Expansion Address
  3303.  
  3304. CPU:  NEC V33/V53 only
  3305. Type of Instruction: System
  3306.  
  3307. Instruction:  RETXA int_vector
  3308.  
  3309.  
  3310. Description:
  3311.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  3312.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  3313.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  3314.          SP     <-  SP -6
  3315.          IE     <-  0
  3316.          BRK <-  0
  3317.          MD     <-  0
  3318.          PC     <- [int_vector*4 +0,+1]
  3319.          PS     <- [int_vector*4 +2,+3]
  3320.          Disable EA mode.
  3321.  
  3322. Flags Affected:     None
  3323.  
  3324. CPU mode: RM
  3325.  
  3326. +++++++++++++++++++++++
  3327. Physical Form:    RETXA  imm8
  3328. COP (Code of Operation)     : 0Fh F0h imm8
  3329.  
  3330. Clocks:     12
  3331. ---------------------------------------------------
  3332. ROL4  -     Rotate     left  4 bits
  3333.  
  3334.  
  3335. CPU: NEC/Sony all  V-series
  3336. Type of Instruction: User
  3337.  
  3338. Instruction:  ROL4  dest
  3339.  
  3340.  
  3341. Description:
  3342.         AL            dest
  3343.  
  3344. bits        7     4 3    0     7    4 3   0
  3345.         -------------     -------------
  3346.         |      |  o    <--------|    <-|-o  |<--\
  3347.         ---------|----     -------------     |
  3348.              |                 |
  3349.              \---------------------------/
  3350.  
  3351.  
  3352. Note:    This instruction Rotates (4bits) left out of dest through low 4bits
  3353.     of AL
  3354.  
  3355.  
  3356. Flags Affected: None
  3357.  
  3358. CPU mode: RM
  3359.  
  3360. +++++++++++++++++++++++
  3361. Physical Form         : ROL4     reg/mem8
  3362. COP (Code of Operation)     : 0FH 28H  PostByte
  3363.  
  3364. Clocks:        ROL4 reg/mem8
  3365. NEC V20:        25/28
  3366.  
  3367.  
  3368. ---------------------------------------------------
  3369. ROR4  -     Rotate     right    4 bits
  3370.  
  3371.  
  3372. CPU: NEC/Sony  all V-series
  3373. Type of Instruction: User
  3374.  
  3375. Instruction:  ROL4  dest
  3376.  
  3377.  
  3378. Description:
  3379.         AL            dest
  3380.  
  3381. bits        7     4 3    0     7    4 3   0
  3382.         -------------     -------------
  3383.         |      |   o--|------>|    o-|-> o-|--\
  3384.         ---------^----     -------------     |
  3385.              |                 |
  3386.              \---------------------------/
  3387.  
  3388.  
  3389. Note:    This instruction Rotates (4bits) right out of dest through low 4bits
  3390.     of AL
  3391.  
  3392.  
  3393. Flags Affected: None
  3394.  
  3395. CPU mode: RM
  3396.  
  3397. +++++++++++++++++++++++
  3398. Physical Form         : ROR4     reg/mem8
  3399. COP (Code of Operation)     : 0FH 2AH  PostByte
  3400.  
  3401. Clocks:        ROR4 reg/mem8
  3402. NEC V20:        29/33
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408. ---------------------------------------------------
  3409. RSDC  - Restore Register and Descriptor
  3410.  
  3411.  
  3412. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3413.       IBM   BL486DX/DX2
  3414.       TI    486SLC/DLC/e
  3415.       TI    486SXL/SXL2/SXLC
  3416.       TI    Potomac
  3417. Type of Instruction: System
  3418.  
  3419. Instruction:  RSDC sreg,sorc
  3420.  
  3421.  
  3422. Description:
  3423.     sreg [selector,shadow_descriptor] <- sorc
  3424.  
  3425.     ; sorc is register and descriptor structure (see below)
  3426.  
  3427.     ; Note: This instruction load segment register
  3428.     ;    include shadow descriptor
  3429.  
  3430.  
  3431. Format or Register and Descriptor Structure:
  3432.     +00    Limit (15-0)
  3433.     +02    Base  (15-0)
  3434.     +04    Base  (23-16)
  3435.     +05    AR byte
  3436.     +06    AR2/Limit (19-16)
  3437.     +07    Base  (31-24)
  3438.     +08    Selector
  3439.     Length of structure is 10h
  3440.  
  3441.  
  3442.  
  3443. Flags Affected: None
  3444.  
  3445. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3446.  
  3447.  
  3448.        1) CPL=0
  3449.        2) CCR1.bit1=1  ; SMI enable
  3450.        3) SMAR size > 0
  3451.        4A) in SMM
  3452.        4B) CCR1.bit2=1 ; SMAC is on
  3453.  
  3454.  
  3455.  
  3456. ++++++++++++++++
  3457.  
  3458. Physical Form: RSDC sgeg,mem80
  3459. COP (Code of Operation)     : 0FH 79H  [mm sreg3 mmm]
  3460. Clocks    IBM BL486DX: 10
  3461.     TI  486SXL : 14
  3462.  
  3463. Note: sreg3 is: 000 ES
  3464.         001 CS
  3465.         010 SS
  3466.         011 DS
  3467.         100 FS
  3468.         101 GS
  3469.  
  3470.  
  3471.  
  3472. ---------------------------------------------------
  3473. RSLDT  - Restore LDTR and Descriptor
  3474.  
  3475.  
  3476. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3477.       IBM   BL486DX/DX2
  3478.       TI    486SLC/DLC/e
  3479.       TI    486SXL/SXL2/SXLC
  3480.       TI    Potomac
  3481. Type of Instruction: System
  3482.  
  3483. Instruction:  RSLDT sorc
  3484.  
  3485.  
  3486. Description:
  3487.     LDTR [selector,shadow_descriptor] <- sorc
  3488.  
  3489.     ; sorc is register and descriptor structure (see below)
  3490.  
  3491.  
  3492.  
  3493. Format or Register and Descriptor Structure:
  3494.     +00    Limit (15-0)
  3495.     +02    Base  (15-0)
  3496.     +04    Base  (23-16)
  3497.     +05    AR byte
  3498.     +06    AR2/Limit (19-16)
  3499.     +07    Base  (31-24)
  3500.     +08    Selector
  3501.     Length of structure is 10h
  3502.  
  3503.  
  3504.  
  3505. Flags Affected: None
  3506.  
  3507. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3508.  
  3509.  
  3510.        1) CPL=0
  3511.        2) CCR1.bit1=1  ; SMI enable
  3512.        3) SMAR size > 0
  3513.        4A) in SMM
  3514.        4B) CCR1.bit2=1 ; SMAC is on
  3515.  
  3516.  
  3517.  
  3518. ++++++++++++++++
  3519.  
  3520. Physical Form: RSLDT  mem80
  3521. COP (Code of Operation)     : 0FH 7BH  [mm 000 mmm]
  3522. Clocks    IBM BL486DX: 10
  3523.     TI  486SXL : 14
  3524.  
  3525.  
  3526.  
  3527.  
  3528. ---------------------------------------------------
  3529. RSM  - Resume from System Managment Mode
  3530.  
  3531.  
  3532. CPU:  I486 SL Enhanced+,i486SL,i386CX,i386EX
  3533. Type of Instruction: System
  3534.  
  3535. Instruction: RSM
  3536.  
  3537. Description:
  3538.        Restore execution state from SMRAM and
  3539.        return to previous CPU mode
  3540.  
  3541.  
  3542. CPU mode: SMM only
  3543.      ( INT 6 - Undefined Opcode in all other mode )
  3544.  
  3545. Flags Affected: All
  3546.  
  3547. Note: CPU state restored from dump created entrance to SMM.
  3548.       The CPU leave SMM and return to previous mode.
  3549.       If CPU detect any invalid state it enters shutdown.
  3550.       This invalid states is:
  3551.        * The value stored in State Dump Base field is not 32K aligned
  3552.      address
  3553.        * Any Reserved bit of CR4 is set to 1 (Pentium only)
  3554.        * Any  illegal Combination of CR0:
  3555.        ** (PG=1 and PE=0)
  3556.        ** (NW=1 and CD=0)
  3557.  
  3558.  
  3559. Format of Execution State in SMRAM:
  3560.     Offset    Register
  3561.     7FFCh    CR0
  3562.     7FF8h    CR3
  3563.     7FF4h    EFLAGS
  3564.     7FF0h    EIP
  3565.     7FECh    EDI
  3566.     7FE8h    ESI
  3567.     7FE4h    EBP
  3568.     7FE0h    ESP
  3569.     7FDCh    EBX
  3570.     7FD8h    EDX
  3571.     7FD4h    ECX
  3572.     7FD0h    EAX
  3573.     7FCCh    DR7
  3574.     7FC4h    TR, upper 2 bytes reserved
  3575.     7FC0h    LDTR, upper 2 bytes reserved
  3576.     7FBCh    GS, upper 2 bytes reserved
  3577.     7FB8h    FS, upper 2 bytes reserved
  3578.     7FB4h    DS, upper 2 bytes reserved
  3579.     7FB0h    SS, upper 2 bytes reserved
  3580.     7FACh    CS, upper 2 bytes reserved
  3581.     7FA8h    ES, upper 2 bytes reserved
  3582.     7F98h    Reserved
  3583.     7F94h    IDT base  (4 bytes)
  3584.     7F8Ch    Reserved
  3585.     7F88h    GDT base  (4 bytes)
  3586.     7F04h    Reserved
  3587.     7F02h    Auto HALT Restart Slot (2 bytes)
  3588.         Bits 15..2 are reserved
  3589.         Bit 1  Bit 0    Description
  3590.         0    0    Resume to next instruction in interrupted
  3591.                 program
  3592.         0    1    Unpredictable
  3593.         1    0    Return to next instruction after HALT
  3594.         1    1    Return to HALT state
  3595.     7F00h    I/O Restart Slot (2 bytes)
  3596.         When RSM execution if I/O restart slot = 0FFh then
  3597.         EIP modified to instruction immediate preceding the
  3598.         SMI# request i.e. CPU automatically reexecute I/O
  3599.         instruction which be trapped by SMI.
  3600.     7EFCh    SMM Revision Identificator (4 bytes)
  3601.         Bits    Description
  3602.         31..18    Reserved
  3603.         17    If=1 Processor support SMBASE relocation
  3604.             else not support
  3605.         16    If =1 Processor support I/O Instruction Restart
  3606.         15..0    SMM Revision Identificator
  3607.             P5,486s = 0000h
  3608.             P54C when I/O Restarts enable = 0002h
  3609.     7EF8h    SMBASE Slot (4 bytes)
  3610.         SMBASE is 32KB aligned 32bit dword which contained a base
  3611.         address for SMRAM.
  3612.         Default value is 30000h
  3613.         Starting Address for for jump in SMM is:
  3614.           SMBASE+8000h
  3615.         Starting address for State Save area is
  3616.           SMBASE+[8000h+7FFFh]
  3617.     7E00h    Reserved
  3618.  
  3619.  
  3620. Note: In fields marked Reserved saved and restores next registers:
  3621.       CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  3622.       Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  3623.       More Information Not available Yet.
  3624.  
  3625.  
  3626. Physical Form:          RSM
  3627. COP (Code of Operation)      : 0FH AAH
  3628. Clocks:      i386CX      : 338
  3629.     i486 SL Enhanced  : ???
  3630.      IntelDX4      : 452        ; SMBASE relocation
  3631.               : 456        ; AutoHALT restart
  3632.               : 465        ; I/O Trap restart
  3633.          Pentium  : 83
  3634.  
  3635. ---------------------------------------------------
  3636. RSM  - Resume from SMM
  3637.  
  3638.  
  3639. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3640.       IBM   BL486DX/DX2
  3641.       TI    486SLC/DLC/e
  3642.       TI    486SXL/SXL2/SXLC
  3643.       TI    Potomac
  3644. Type of Instruction: System
  3645.  
  3646. Instruction:  RSM
  3647.  
  3648.  
  3649. Description:
  3650.     RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  3651.     SMM SPACE (defined by SMAR register);
  3652.     EXIT SMM;
  3653.  
  3654. Format of SMM Header:
  3655.     Offset    Length    Description
  3656.     -00h    -    Nothing (Top of SMM space) (Not accessable)
  3657.     -04h    32    DR7
  3658.     -08h    32    EFLAGS
  3659.     -0Ch    32    CR0
  3660.     -10h    32    Current EIP
  3661.     -14h    32    Next instruction EIP
  3662.     -16h    16    Reserved
  3663.     -18h    16    CS selector
  3664.     -1Ch    32    CS descriptor(63-32)
  3665.     -20h    32    CS descriptor(31-0)
  3666.     -24h    32    SMM Flags
  3667.             [ ALL BITS are Not available in Cx486S/S2/D/D2]
  3668.             Bit   Description
  3669.             1    I (IN/INSx/OUT/OUTx Indicator)
  3670.                  If =0 current instruction performed
  3671.                    I/O read
  3672.                 =1 I/O write
  3673.             2    P (REP INSx/OUTx Prefix)
  3674.                  If =1 current instruction has REP pfix.
  3675.                 =0 not has REP pfix
  3676.             3    S (Software SMI)
  3677.                  If =1 current SMM is result of execution
  3678.                    SMINT instruction
  3679.                 =0 current SMM is result of hardware SMI
  3680.             Note: TI 486SXL/SXL2 support only bits 1,2.
  3681.     -26h    16    I/O Write Data size
  3682.             [ Not available in Cx486S/S2/D/D2]
  3683.             [ Not available in TI486SXL/SXL2]
  3684.             [ Not available in TI486SLC/DLC/e]
  3685.             1h = byte
  3686.             3h = word
  3687.             fh = dword
  3688.     -28h    16    I/O Write Address
  3689.             [ Not avaliable in Cx486S/S2/D/D2]
  3690.             [ Not available in TI486SXL/SXL2]
  3691.             [ Not available in TI486SLC/DLC/e]
  3692.     -2Ch    32    I/O Write Data
  3693.             [ Not avaliable in Cx486S/S2/D/D2]
  3694.             [ Not available in TI486SXL/SXL2]
  3695.             [ Not available in TI486SLC/DLC/e]
  3696.     -30h    32    ESI or EDI
  3697.             This field saved value of source/destination
  3698.             for restart INSx/OUTSx instruction
  3699.             [ Not avaliable in Cx486S/S2/D/D2]
  3700.  
  3701.  
  3702.  
  3703. Flags Affected: All
  3704.  
  3705. CPU mode: SMM
  3706.  
  3707. ++++++++++++++++
  3708.  
  3709. Physical Form: RSM
  3710. COP (Code of Operation)     : 0FH AAH
  3711. Clocks    IBM BL486DX: 76
  3712.     TI  486SXL : 58
  3713.  
  3714.  
  3715.  
  3716.  
  3717. ---------------------------------------------------
  3718. RSTS  - Restore TR and Descriptor
  3719.  
  3720.  
  3721. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3722.       TI    486SLC/DLC/e
  3723.       TI    486SXL/SXL2/SXLC
  3724.       IBM   BL486DX/DX2
  3725. Type of Instruction: System
  3726.  
  3727. Instruction:  RSTS sorc
  3728.  
  3729.  
  3730. Description:
  3731.     TR [selector,shadow_descriptor] <- sorc
  3732.  
  3733.     ; sorc is register and descriptor structure (see below)
  3734.  
  3735.  
  3736.  
  3737. Format or Register and Descriptor Structure:
  3738.     +00    Limit (15-0)
  3739.     +02    Base  (15-0)
  3740.     +04    Base  (23-16)
  3741.     +05    AR byte
  3742.     +06    AR2/Limit (19-16)
  3743.     +07    Base  (31-24)
  3744.     +08    Selector
  3745.     Length of structure is 10h
  3746.  
  3747.  
  3748.  
  3749. Flags Affected: None
  3750.  
  3751. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3752.  
  3753.  
  3754.        1) CPL=0
  3755.        2) CCR1.bit1=1  ; SMI enable
  3756.        3) SMAR size > 0
  3757.        4A) in SMM
  3758.        4B) CCR1.bit2=1 ; SMAC is on
  3759.  
  3760.  
  3761.  
  3762. ++++++++++++++++
  3763.  
  3764. Physical Form: RSTS  mem80
  3765. COP (Code of Operation)     : 0FH 7DH  [mm 000 mmm]
  3766. Clocks    IBM BL486DX: 10
  3767.     TI  486SXL : 14
  3768.  
  3769.  
  3770.  
  3771.  
  3772. ---------------------------------------------------
  3773. SET1  -     Set a Specified Bit
  3774.  
  3775.  
  3776. CPU: NEC/Sony V-series
  3777. Type of Instruction: User
  3778.  
  3779. Instruction:  SET1 dest,bitnumb
  3780.  
  3781.  
  3782. Description:
  3783.         BIT  bitnumb OF dest <- 1;
  3784.  
  3785.  
  3786.  
  3787. Flags Affected: None
  3788.  
  3789.  
  3790. CPU mode: RM
  3791.  
  3792. +++++++++++++++++++++++
  3793. Physical Form:           SET1 reg/mem8,CL
  3794. COP (Code of Operation)     : 0FH 14H  Postbyte
  3795.  
  3796. Physical Form:           SET1 reg/mem8,imm8
  3797. COP (Code of Operation)     : 0FH 1CH  Postbyte imm8
  3798.  
  3799. Physical Form:           SET1 reg/mem16,CL
  3800. COP (Code of Operation)     : 0FH 15H  Postbyte
  3801.  
  3802. Physical Form:           SET1 reg/mem16,imm8
  3803. COP (Code of Operation)     : 0FH 1DH  Postbyte  imm8
  3804.  
  3805.  
  3806. Clocks:                 SET1
  3807.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  3808. NEC V20:      4/13     5/14          4/13          5/14
  3809.  
  3810.  
  3811.  
  3812.  
  3813. ---------------------------------------------------
  3814. SETALC    - Set AL to Carry Flag
  3815.  
  3816.  
  3817. CPU:  Intel 8086 and all its clones and upward
  3818.     compatibility chips.
  3819. Type of Instruction: User
  3820.  
  3821. Instruction: SETALC
  3822.  
  3823. Description:
  3824.     IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  3825.  
  3826.  
  3827. Flags Affected: None
  3828.  
  3829. CPU mode: RM,PM,VM,SMM
  3830.  
  3831. Physical Form:         SETALC
  3832. COP (Code of Operation): D6H
  3833. Clocks:          80286    : n/a   [3]
  3834.           80386    : n/a   [3]
  3835.          Cx486SLC  : n/a   [2]
  3836.           i486     : n/a   [3]
  3837.           Pentium  : n/a   [3]
  3838. Note: n/a is Time that Intel etc not say.
  3839.       [3] is real time it executed.
  3840.  
  3841.  
  3842.  
  3843. ---------------------------------------------------
  3844. SMI  - System Managment Interrupt
  3845.  
  3846. CPU:  AMD Am386SXLV,Am386DXLV
  3847.       AMD 486s
  3848. Type of Instruction: System
  3849.  
  3850. Instruction: SMI
  3851.  
  3852. Description:
  3853.     IF (SMIE=1) THEN
  3854.            {
  3855.            SAVE STATUS OF EXECUTION TO SMRAM;
  3856.            ENTER SMM;
  3857.            SMMS <- 1;
  3858.            }
  3859.        ELSE
  3860.           {
  3861.           INT 1;
  3862.           }
  3863.        END
  3864.  
  3865. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  3866.            =1 Enable soft SMI
  3867.            =0 Disable soft SMI
  3868.        SMMS is <SMM status bit>     (DR6.bit12)
  3869.            =1 SMM was entered
  3870.            =0 SMM status cleared
  3871.  
  3872. Flags Affected: None
  3873.  
  3874. CPU mode: RM?,PM0
  3875.  
  3876. Physical Form:         SMI
  3877. COP (Code of Operation): F1H
  3878. Clocks:         Am386SXLV : 357
  3879.          Am386DXLV : 325
  3880.          Am486xxxx : Don't know, do you?
  3881.  
  3882. ---------------------------------------------------
  3883. SMINT - Software SMM Interrupt
  3884.  
  3885.  
  3886. CPU:  Cyrix Cx486DX/DX2/DX4
  3887.       IBM   BL486DX/DX2
  3888. Note: Never in Cx486S/S2/D/D2
  3889.       Never in any TI's chips.
  3890. Type of Instruction: System
  3891.  
  3892. Instruction:  SMINT
  3893.  
  3894.  
  3895. Description:
  3896.     SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  3897.     SMM SPACE (defined by SMAR register);
  3898.     ENTER SMM MODE;
  3899.  
  3900.  
  3901. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  3902.  
  3903.  
  3904. Flags Affected: None
  3905.  
  3906. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  3907.  
  3908.  
  3909. ++++++++++++++++
  3910.  
  3911. Physical Form: SMINT
  3912. COP (Code of Operation)     : 0FH 7EH
  3913. Clocks    IBM BL486DX: 24
  3914.  
  3915.  
  3916.  
  3917.  
  3918.  
  3919. ---------------------------------------------------
  3920. STOP    -  Stop CPU
  3921.  
  3922. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  3923. Type of Instruction: System
  3924.  
  3925. Instruction:  STOP
  3926.  
  3927.  
  3928. Description:
  3929.         PowerDown instruction, Stop Oscillator,
  3930.         Halt CPU.
  3931.  
  3932.  
  3933. Flags Affected:     None
  3934.  
  3935. CPU mode: RM
  3936.  
  3937. +++++++++++++++++++++++
  3938. Physical Form:    STOP
  3939. COP (Code of Operation)     : 0Fh BEh
  3940.  
  3941. Clocks:     N/A
  3942.  
  3943. ---------------------------------------------------
  3944. SUB4S  -  Subtraction of packed BCD strings
  3945.  
  3946.  
  3947. CPU: NEC/Sony all V-series
  3948. Type of Instruction: User
  3949.  
  3950. Instruction:  SUB4S
  3951.  
  3952.  
  3953. Description:
  3954.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  3955.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) -
  3956.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  3957.  
  3958.       Length of BCD string in CL;
  3959.  
  3960. Note:    si,di,cl and other registers not changed
  3961.  
  3962. Flags Affected: OF,CF,ZF
  3963.     ;;  ZF set if result is zero.
  3964.     ;;  CF,OF set as result of operation with most
  3965.     ;;  signification BCDs.
  3966.  
  3967. CPU mode: RM
  3968.  
  3969. +++++++++++++++++++++++
  3970. Physical Form: SUB4S
  3971. COP (Code of Operation)     : 0FH 22H
  3972.  
  3973. Clocks:        SUB4S
  3974. NEC V20:    ~7+19*CL
  3975.  
  3976.  
  3977.  
  3978. ---------------------------------------------------
  3979. SVDC  - Save Register and Descriptor
  3980.  
  3981.  
  3982. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3983.       IBM   BL486DX/DX2
  3984.       TI    486SLC/DLC/e
  3985.       TI    486SXL/SXL2/SXLC
  3986.       TI    Potomac
  3987. Type of Instruction: System
  3988.  
  3989. Instruction:  SVDC dest,sreg
  3990.  
  3991.  
  3992. Description:
  3993.     dest <- sreg [selector,shadow_descriptor]
  3994.  
  3995.     ; dest is register and descriptor structure (see below)
  3996.  
  3997.  
  3998.  
  3999. Format or Register and Descriptor Structure:
  4000.     +00    Limit (15-0)
  4001.     +02    Base  (15-0)
  4002.     +04    Base  (23-16)
  4003.     +05    AR byte
  4004.     +06    AR2/Limit (19-16)
  4005.     +07    Base  (31-24)
  4006.     +08    Selector
  4007.     Length of structure is 10h
  4008.  
  4009.  
  4010.  
  4011. Flags Affected: None
  4012.  
  4013. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4014.  
  4015.  
  4016.        1) CPL=0
  4017.        2) CCR1.bit1=1  ; SMI enable
  4018.        3) SMAR size > 0
  4019.        4A) in SMM
  4020.        4B) CCR1.bit2=1 ; SMAC is on
  4021.  
  4022.  
  4023.  
  4024. ++++++++++++++++
  4025.  
  4026. Physical Form: SVDC mem80,sreg
  4027. COP (Code of Operation)     : 0FH 78H  [mm sreg3 mmm]
  4028. Clocks    IBM BL486DX: 18
  4029.     TI  486SXL : 22
  4030.  
  4031. Note: sreg3 is: 000 ES
  4032.         001 CS
  4033.         010 SS
  4034.         011 DS
  4035.         100 FS
  4036.         101 GS
  4037.  
  4038.  
  4039.  
  4040. ---------------------------------------------------
  4041. SVLDT  - Save LDTR and Descriptor
  4042.  
  4043.  
  4044. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4045.       IBM   BL486DX/DX2
  4046.       TI    486SLC/DLC/e
  4047.       TI    486SXL/SXL2/SXLC
  4048.       TI    Potomac
  4049. Type of Instruction: System
  4050.  
  4051. Instruction:  SVLDT dest
  4052.  
  4053.  
  4054. Description:
  4055.     dest <- LDTR [selector,shadow_descriptor]
  4056.  
  4057.     ; dest is register and descriptor structure (see below)
  4058.  
  4059.  
  4060.  
  4061. Format or Register and Descriptor Structure:
  4062.     +00    Limit (15-0)
  4063.     +02    Base  (15-0)
  4064.     +04    Base  (23-16)
  4065.     +05    AR byte
  4066.     +06    AR2/Limit (19-16)
  4067.     +07    Base  (31-24)
  4068.     +08    Selector
  4069.     Length of structure is 10h
  4070.  
  4071.  
  4072.  
  4073. Flags Affected: None
  4074.  
  4075. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4076.  
  4077.  
  4078.        1) CPL=0
  4079.        2) CCR1.bit1=1  ; SMI enable
  4080.        3) SMAR size > 0
  4081.        4A) in SMM
  4082.        4B) CCR1.bit2=1 ; SMAC is on
  4083.  
  4084.  
  4085.  
  4086. ++++++++++++++++
  4087.  
  4088. Physical Form: SVLDT mem80
  4089. COP (Code of Operation)     : 0FH 7AH  [mm 000 mmm]
  4090. Clocks    IBM BL486DX: 18
  4091.     TI  486SXL : 22
  4092.  
  4093.  
  4094.  
  4095. ---------------------------------------------------
  4096. SVTS  - Save TR and Descriptor
  4097.  
  4098.  
  4099. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4100.       IBM   BL486DX/DX2
  4101.       TI    486SLC/DLC/e
  4102.       TI    486SXL/SXL2/SXLC
  4103.       TI    Potomac
  4104. Type of Instruction: System
  4105.  
  4106. Instruction:  SVTS dest
  4107.  
  4108.  
  4109. Description:
  4110.     dest <- TR [selector,shadow_descriptor]
  4111.  
  4112.     ; dest is register and descriptor structure (see below)
  4113.  
  4114.  
  4115.  
  4116. Format or Register and Descriptor Structure:
  4117.     +00    Limit (15-0)
  4118.     +02    Base  (15-0)
  4119.     +04    Base  (23-16)
  4120.     +05    AR byte
  4121.     +06    AR2/Limit (19-16)
  4122.     +07    Base  (31-24)
  4123.     +08    Selector
  4124.     Length of structure is 10h
  4125.  
  4126.  
  4127.  
  4128. Flags Affected: None
  4129.  
  4130. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4131.  
  4132.  
  4133.        1) CPL=0
  4134.        2) CCR1.bit1=1  ; SMI enable
  4135.        3) SMAR size > 0
  4136.        4A) in SMM
  4137.        4B) CCR1.bit2=1 ; SMAC is on
  4138.  
  4139.  
  4140.  
  4141. ++++++++++++++++
  4142.  
  4143. Physical Form: SVTS mem80
  4144. COP (Code of Operation)     : 0FH 7CH  [mm 000 mmm]
  4145. Clocks    IBM BL486DX: 18
  4146.     TI  486SXL : 22
  4147.  
  4148.  
  4149.  
  4150. ---------------------------------------------------
  4151. TEST1  -  Test a Specified bit
  4152.  
  4153.  
  4154. CPU: NEC/Sony all V-series
  4155. Type of Instruction: User
  4156.  
  4157. Instruction:  NOT1 dest,bitnumb
  4158.  
  4159.  
  4160. Description:
  4161.         IF dest IS  8BIT THEN  bitn <- bitnumb AND 7;
  4162.         IF dest IS 16BIT THEN  bitn <- bitnumb AND Fh;
  4163.  
  4164.         IF (BIT bitn OF dest) = 0 THEN
  4165.             {
  4166.             ZF <- 1;
  4167.             }
  4168.         ELSE    {
  4169.             ZF <- 0;
  4170.             }
  4171.         ENDIF
  4172.  
  4173.  
  4174. Flags Affected: ZF
  4175.  
  4176.  
  4177. CPU mode: RM
  4178.  
  4179. +++++++++++++++++++++++
  4180. Physical Form:           TEST1 reg/mem8,CL
  4181. COP (Code of Operation)     : 0FH 10H  Postbyte
  4182.  
  4183. Physical Form:           TEST1 reg/mem8,imm8
  4184. COP (Code of Operation)     : 0FH 18H  Postbyte imm8
  4185.  
  4186. Physical Form:           TEST1 reg/mem16,CL
  4187. COP (Code of Operation)     : 0FH 11H  Postbyte
  4188.  
  4189. Physical Form:           TEST1 reg/mem16,imm8
  4190. COP (Code of Operation)     : 0FH 19H  Postbyte  imm8
  4191.  
  4192.  
  4193. Clocks:                 TEST1
  4194.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  4195. NEC V20:      3/12     4/13         3/12        4/13
  4196.  
  4197.  
  4198.  
  4199. ---------------------------------------------------
  4200. TSKSW  -   Task Switch
  4201.  
  4202. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  4203. Type of Instruction: System
  4204.  
  4205. Instruction:  TSKSW   reg16
  4206.  
  4207.  
  4208. Description:  Perform a High-Speed task switch to the register bank indicated
  4209.           by lower 3 bits of reg16. The PC and PSW are saved in the old
  4210.           banks. PC and PSW save Registers and the new PC and PSW values
  4211.           are retrived from the new register bank's save area.
  4212.  
  4213. Note:         See BRKCS instruction for more Info about banks.
  4214.  
  4215.  
  4216.  
  4217. Flags Affected:     All
  4218.  
  4219. CPU mode: RM
  4220.  
  4221. +++++++++++++++++++++++
  4222. Physical Form:    TSCSW reg16
  4223. COP (Code of Operation)     : 0Fh 94h <1111 1RRR>
  4224.  
  4225. Clocks:     11
  4226.  
  4227.  
  4228.  
  4229. --------------------------------------------------
  4230. UD2  -    Undefined Instruction
  4231.  
  4232. CPU:    Pentium Pro+ and all other
  4233.  
  4234. Logical Form:    UD2
  4235.  
  4236. Description:
  4237.         Caused #UD exception
  4238.  
  4239. Flags Affected: No Flags Affected
  4240. CPU Mode : RM,PM,VM,VME,SMM
  4241.  
  4242. Exceptions :
  4243.     RM    PM    V86    VME    SMM
  4244.     #UD    #UD    #UD    #UD    #UD Undefined Instruction
  4245.     No more Exceptions
  4246.  
  4247. Note :
  4248.     This instruction caused #UD. Intel guranteed that in future Intel's
  4249.     CPUs this instruction will caused #UD. Of course all previous CPUs
  4250.     (186+) caused #UD on this opcode. This instruction used by software
  4251.     writers for testing #UD exception servise routine.
  4252.  
  4253.  
  4254.  
  4255. ++++++++++++++++++++++++++++++
  4256.  
  4257. Physical Form : UD2
  4258.  
  4259. COP (Code of Operation) : 0Fh 0Bh
  4260.  
  4261. Clocks :    UD2
  4262. 8088:    Not supported
  4263. NEC V20:    Not supported
  4264. 80186:    ~int
  4265. 80286:    ~int
  4266. 80386:    ~int
  4267. Cx486SLC:    ~int
  4268. i486:    ~int
  4269. Cx486DX:    ~int
  4270. Cx5x86:        ~int
  4271. Pentium:    ~int
  4272. Nx5x86:        ~int
  4273. Cx6x86:        ~int
  4274. Am5k86:        ~int
  4275. Pentium Pro:    ~int
  4276.  
  4277. ++++++++++++++++++++++++++++++
  4278.  
  4279. ---------------------------------------------------
  4280. UMOV  - Mov Data to Main (User) Memory
  4281.  
  4282.  
  4283. CPU:  AMD Am386SXLV,Am386DXLV
  4284.       AMD 486s
  4285.       IBM 486SLC2
  4286. Type of Instruction: Special System
  4287.  
  4288. Instruction: UMOV dest,sorc
  4289.  
  4290.  
  4291. Description:
  4292.       dest <- sorc;
  4293.  
  4294. Note!!!!!: But all memory operands placed in Main memory only !
  4295.       ( i.e. not in SMRAM then in SMM )
  4296.  
  4297. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  4298.      check that CPU is none UMC's before
  4299.  
  4300. Note:     On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  4301.      determination of Cyrix Microprocessors.
  4302.  
  4303. Note:     Pentium P54C never support this instruction
  4304.  
  4305. Flags Affected:     None
  4306.  
  4307. CPU mode: RM?,PM?,VM?,SMM
  4308.  
  4309. +++++++++++++++++++++++
  4310. Physical Form:           UMOV     r/m8,r8
  4311. COP (Code of Operation)     : 0FH 10H Postbyte
  4312.  
  4313. Clocks:
  4314.       Am386SXLV or AM386DXLV:  2/2
  4315.       IBM 486SLC2        :  4
  4316. +++++++++++++++++++++
  4317. Physical Form:           UMOV     r/m16,r16
  4318.                UMOV     r/m32,r32
  4319. COP (Code of Operation)     : 0FH 11H Postbyte
  4320.  
  4321. Clocks:
  4322.       Am386SXLV or AM386DXLV:  2/2
  4323.       IBM 486SLC2        :  4
  4324. +++++++++++++++++++++++
  4325. Physical Form:           UMOV     r8,r/m8
  4326. COP (Code of Operation)     : 0FH 12H Postbyte
  4327.  
  4328. Clocks:
  4329.       Am386SXLV or AM386DXLV:  2/4
  4330.       IBM 486SLC2        :  4
  4331. +++++++++++++++++++++
  4332. Physical Form:           UMOV     r16,r/m16
  4333.                UMOV     r32,r/m32
  4334. COP (Code of Operation)     : 0FH 13H Postbyte
  4335.  
  4336. Clocks:
  4337.       Am386SXLV or AM386DXLV:  2/4
  4338.       IBM 486SLC2        :  4
  4339.  
  4340.  
  4341. ---------------------------------------------------
  4342. WBINVD    - Write Back and Invalidate Cache
  4343.  
  4344.  
  4345. CPU:  I486 +
  4346. Type of Instruction: System
  4347.  
  4348. Instruction: WBINVD
  4349.  
  4350. Description:
  4351.          IF (internal cache is WB and in WB mode) THEN
  4352.               {
  4353.               Write Back Internal Cache;
  4354.               }
  4355.          Flush internal cache;
  4356.          Signal external cache to Write Back;
  4357.          Signal external cache to Flush;
  4358.  
  4359.  
  4360. Notes: This instruction not work in Real Mode and  in
  4361. Protected mode work only in ring 0 ;
  4362.  
  4363. Flags Affected: None
  4364.  
  4365. CPU mode: PM0,SMM
  4366.  
  4367. Physical Form:         INVD
  4368. COP (Code of Operation): 0FH 09H
  4369. Clocks: Cyrix Cx486SLC : 4
  4370.           i486     : 5
  4371.           Pentium  : 2000+
  4372.  
  4373.  
  4374. -----------------------------------------------------
  4375. APPENDIX    A0
  4376. Cyrix Cx486SLC/DLC configuration Registers
  4377.  
  4378. for Cx486DLC:
  4379. Register    Full Register Name        Index    size(bits)
  4380. CCR0    Configuration Control Register #0    C0H    8
  4381. CCR1    Configuration Control Register #1    C1H    8
  4382. NCR1    Non-cacheble Region #0            C4H-C6H 24
  4383. NCR2    Non-cachable Region #1            C7H-C9H 24
  4384. NCR3    Non-cacheble Region #2            CAH-CCH 24
  4385. NCR4    Non-cacheble Region #4            CDH-CFH 24
  4386.  
  4387. for Cx486SLC:
  4388. Register    Full Register Name        Index    size(bits)
  4389. CCR0    Configuration Control Register #0    C0H    8
  4390. CCR1    Configuration Control Register #1    C1H    8
  4391. NCR1    Non-cacheble Region #0            C5H-C6H 16
  4392. NCR2    Non-cachable Region #1            C8H-C9H 16
  4393. NCR3    Non-cacheble Region #2            CBH-CCH 16
  4394. NCR4    Non-cacheble Region #4            CEH-CFH 16
  4395.  
  4396.  
  4397. For access to this register You need to do:
  4398.  
  4399. A) write INDEX_OF_REGISTER to I/O port #22H
  4400. B) wait 5-6 clocks
  4401. D) read/write DATA from/to register via I/O port #23
  4402.  
  4403. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  4404.       generated external bus cycle. If You try to read I/O port
  4405.       #22H CPU will generated external bus cycle too. Then index
  4406.       is out of range all operations with port #23H will generate
  4407.       external bus cycle.
  4408.  
  4409. State After Reset:
  4410.     CCR0    00H
  4411.     CCR1    xxxx xxx0B
  4412.     NCR1    000Fh
  4413.     NCR2    0
  4414.     NCR3    0
  4415.     NCR4    0
  4416.  
  4417. format of registers:
  4418.  
  4419. CCR0:
  4420. Bit    Name    Description
  4421. 7    SUSPEND
  4422.     If =1 then enable SUSP# and SUSPA# pins, which used for
  4423.     put CPU in PowerSave mode.
  4424.     If =0 disable
  4425.  
  4426. 6    CO    (Cache Organisation)
  4427.     If =0 2ways set associative
  4428.     If =1 Dirrect Mapped
  4429.  
  4430. 5    BARB
  4431.     If =1 then enable flushing internal cache when begining
  4432.     HOLD state.
  4433.     IF =0 disable.
  4434.  
  4435. 4    FLUSH
  4436.     If =1 enable input pin FLUSH#
  4437.     if =0 disable
  4438.  
  4439. 3    KEN
  4440.     If =1 enable input pin KEN#
  4441.     if =0 disable
  4442.  
  4443. 2    A20M
  4444.     If =1 enable input pin A20M#
  4445.     if =0 disable
  4446.  
  4447. 1    NC1
  4448.     If=1 then 640KB-1MB area never caching
  4449.     If=0 caching (but see NCRi)
  4450.  
  4451. 0    NC0
  4452.     If=1 then first 64K of each 1MB bounds not caching,
  4453.     when in Real or Virtual8086 mode
  4454.     If =0 caching
  4455.  
  4456.  
  4457. CCR1:
  4458. Bit    Name    Description
  4459. 7-1    Reserved
  4460. 0    RPL
  4461.     If =1 then enable RPLSET,RPLVAL# pins
  4462.     If =0 this pins are disable and float.
  4463.  
  4464. NCRi:
  4465. Byte    Bits    Description
  4466. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  4467.         (Reserved for Cx486SLC)
  4468. 1    7-0    Address bits A23-A16 of non-cachable region start
  4469. 2    7-4    Address bits A15-A12 of non-cacheble region start
  4470. 2    3-0    Size of non-cacheble block:
  4471.         0000  Disable NCRi
  4472.         0001  4K
  4473.         0010  8K
  4474.         0011  16K
  4475.         0100  32K
  4476.         0101  64K
  4477.         0110  128K
  4478.         0111  256K
  4479.         1000  512K
  4480.         1001  1M
  4481.         1010  2M
  4482.         1011  4M
  4483.         1100  8M
  4484.         1101  16M
  4485.         1110  32M
  4486.         1111  4G
  4487.  
  4488. NCRi bytes:
  4489.  
  4490.  
  4491.     Byte
  4492. NCRi    0    1    2
  4493. NCR1    C4H    C5H    C6H
  4494. NCR2    C7H    C8H    C9H
  4495. NCR3    CAH    CBH    CCH
  4496. NCR4    CDH    CDH    CEH
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502. ---------------------------------------------------
  4503. APPENDIX    A1
  4504. Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4505. IBM   BL486DX/DX2
  4506. configuration Registers
  4507.  
  4508. Register    Full Register Name        Index    size(bits)
  4509. CCR1    Configuration Control Register #1    C1H    8
  4510. CCR2    Configuration Control Register #2    C2H    8
  4511. CCR3    Configuration Control Register #3    C3H    8
  4512. SMAR    SMM Address Region            CDH-CFH 24
  4513. DIR0    Device Identification register #0    FEH    8
  4514. DIR1    Device Identification register #1    FFH    8
  4515.  
  4516.  
  4517. For access to this register You need to do:
  4518.  
  4519. A) write INDEX_OF_REGISTER to I/O port #22H
  4520. B) wait 5-6 clocks
  4521. D) read/write DATA from/to register via I/O port #23
  4522.  
  4523. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  4524.       CPU generated external bus cycle. If You try to read I/O port
  4525.       #22H CPU will generated external bus cycle too. Then index
  4526.       is out of range all operations with port #23H will generate
  4527.       external bus cycle.
  4528.  
  4529. State After Reset:
  4530.     CCR1    00H
  4531.     CCR2    00H
  4532.     CCR3    00H
  4533.     SMAR    0
  4534.     DIR0    see DIR0 description
  4535.     DIR1    see DIR1 description
  4536.  
  4537.  
  4538. format of registers:
  4539.  
  4540. CCR1:
  4541. Bit    Name    Description
  4542. 7..5        Reserved
  4543.  
  4544. 4    NO_LOCK (Negate LOCK#)
  4545. 3    MMAC    (Main Memory Access)
  4546.         If =1 then all data access which occur within SMI
  4547.         routine (when SMAC=1) accessing main memory instead
  4548.         SMM space
  4549.         =0 No affects on access
  4550. 2    SMAC    (System Managment Memory Access)
  4551.         If =1 Any access within SMM memory space issued with SMAADS#
  4552.         output active, SMI# ignored
  4553.         =0 No affects on access
  4554. 1    SMI    (Enable SMM pins)
  4555.         If =1 then enable SMI# i/o pin and SMADS# output pin
  4556.         =0 Float it
  4557. 0    RPL    (Enable RPL pins)
  4558.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  4559.         =0 Float it
  4560.  
  4561.  
  4562.  
  4563. CCR2:
  4564. Bit    Name    Description
  4565. 7    SUSP    (Enable Suspend pins)
  4566.         If =1 SUSP# input and SUSPA# output pins enabled
  4567.         =0 Float
  4568. 6    BWRT    (Enable Burst Write Cycle)
  4569.         If =1 enable use of 16byte burst WB cycle
  4570.         =0 disable
  4571. 5    BARB    (Enable cache coherency on Bus Arbitration)
  4572.         If =1 enable write back of all dirty cache data when
  4573.         HOLD is requered and prior to asserting HLDA.
  4574.         =0 isable
  4575. 4    WT1    (Write-Through Region 1)
  4576.         If =1 Forces all writes to the 640KB-1MB region that
  4577.         hit in cache issued on the external bus
  4578. 3    HALT    (Suspend on HALT)
  4579.         If =1 CPU enters suspend mode following execution
  4580.         HLT instruction.
  4581. 2    LOCK_NW (Lock NW bit)
  4582.         If =1 Prohibits changing the state of NW bit in CR0
  4583. 1    WBAK    (Enable WB Cache Interface pins)
  4584.         If =1 then enable INVAL,WM_RST and HITM# pins
  4585.         =0 float it
  4586. 0        Reserved
  4587.  
  4588.  
  4589. CCR3:
  4590. Note: Cyrix Cx486S/D never have CCR3 register.
  4591. Bit    Name    Description
  4592. 7..2        Reserved
  4593. 1    NMIEN    (NMI Enable)
  4594.         If =1 then NMI enable during SMM
  4595.         If =0 NMI don't recognizing during SMM
  4596. 0      SMI_LOCK (SMM Register Lock)
  4597.         If =1 the following SMM control bits can not
  4598.         be modified:
  4599.              CCR1: bits 1,2,3
  4600.              CCR3: bit 1
  4601.         But this bit may be changed in SMM.
  4602.         This bit (SMI_LOCK) clearing RESET only.
  4603.  
  4604.  
  4605. SMAR:
  4606. (Index CDh)
  4607. Bit    Description
  4608. 7..0    A31..A24 bits of starting adress of SMM region
  4609. (Index CEh)
  4610. Bit    Description
  4611. 7..0    A23..A16 bits of starting adress of SMM region
  4612. (Index CFh)
  4613. Bit    Description
  4614. 7..4    A15..A12 bits of starting adress of SMM region
  4615. 3..0    Size of SMM region:
  4616.     0000    SMM region disabled
  4617.     0001    4K
  4618.     0010    8K
  4619.     0011    16K
  4620.     0100    32K
  4621.     0101    64K
  4622.     0110    128K
  4623.     0111    256K
  4624.     1000    512K
  4625.     1001    1M
  4626.     1010    2M
  4627.     1011    4M
  4628.     1100    8M
  4629.     1101    16M
  4630.     1110    32M
  4631.     1111    4K
  4632.  
  4633.  
  4634. DIR0:
  4635. Note: Cyrix Cx486S/D never have DIR0 register.
  4636. Bit    Description
  4637. 7..0    (Device Identification)
  4638.     for Cx486SLC/e          = 00h
  4639.     for Cx486DLC          = 01h
  4640.     for Cx486SLC2          = 02h
  4641.     for Cx486DLC2          = 03h
  4642.     for Cx486SRx          = 04h
  4643.     for Cx486DRx          = 05h
  4644.     for Cx486SRx2          = 06h
  4645.     for Cx486DRx2          = 07h
  4646.     for Cx486SRu          = 08h  ??
  4647.     for Cx486DRu          = 09h  ??
  4648.     for Cx486SRu2          = 0Ah  ??
  4649.     for Cx486DRu2          = 0Bh  ??
  4650.     for Cx486S (B step)   = 10h
  4651.     for Cx486S2          = 11h
  4652.     for Cx486S/e          = 12h
  4653.     for Cx486S2/e          = 13h
  4654.     for Cx486DX/BL486DX   = 1Ah
  4655.     for Cx486DX2/BL486DX2 = 1Bh
  4656.     for ST486DX2          = 1Bh
  4657.     for TI486DX2          = 1Bh
  4658.     for Cx486DX4          = 1Fh
  4659.     for Cx5x86   (M1sc)   = 2Dh
  4660.     for Cyrix M1          = 30h
  4661.     for TI486DX4          = 81h
  4662.     for Cyrix OverDrive   = FDh
  4663.     for TI Potomac's      = FFh  ;; None connections
  4664. !! See Appendix A3 for More Information
  4665.  
  4666. Important Note: The original Cx486SLC never have DIRi registers.
  4667.  
  4668. DIR1:
  4669. Note: Cyrix Cx486S/D never have DIR1 register.
  4670. Bit    Name    Description
  4671. 7..4    SID    Stepping Identificator
  4672. 3..0    RID    Revision Identification
  4673. !! See Appendix A3 for more information
  4674.  
  4675. CPU        DIR0    DIR1    NOTE
  4676. Cx486DX-40    1Ah    05h
  4677. Cx486DX-50    1Ah    05h
  4678. Cx486DX2-50    1Bh    08h
  4679. Cx486DX2-50    1Bh    08h    Marked 001 on pin side of chip
  4680. ST486DX2-66    1Bh    0Bh
  4681. ST486DX2-66    1Bh    0Bh
  4682.  
  4683. Cx486DX2-v80    1Bh    31h    3 VOLT
  4684. Cx486DX4-v100    1Fh    36h    3 VOLT
  4685. Cx5x86-100    2Dh    13h    3 VOLT
  4686.  
  4687. TI486DX2-66,80    1Bh    32h    stepping eA0
  4688. TI486DX2-66,80    1Bh    B2h    stepping eB0
  4689. TI486DX4-100    81h    91h
  4690. -----------------------------------------------------
  4691. APPENDIX    A2
  4692. TI486SXLC/SXL  configuration Registers
  4693.  
  4694. for TI486SXL
  4695. --------------
  4696. Register    Full Register Name        Index    size(bits)
  4697. CCR0    Configuration Control Register #0    C0H    8
  4698. CCR1    Configuration Control Register #1    C1H    8
  4699. ARR1    Address Region #1            C4H-C6H 24
  4700. ARR2    Address Region #2            C7H-C9H 24
  4701. ARR3    Address Region #3            CAH-CCH 24
  4702. ARR4    Address Region #4            CDH-CFH 24
  4703.  
  4704. for TI486SXLC
  4705. --------------
  4706. Register    Full Register Name        Index    size(bits)
  4707. CCR0    Configuration Control Register #0    C0H    8
  4708. CCR1    Configuration Control Register #1    C1H    8
  4709. ARR1    Address Region #1            C5H-C6H 16
  4710. ARR2    Address Region #2            C8H-C9H 16
  4711. ARR3    Address Region #3            CBH-CCH 16
  4712. ARR4    Address Region #4            CEH-CFH 16
  4713.  
  4714.  
  4715. For access to this register You need to do:
  4716.  
  4717. A) write INDEX_OF_REGISTER to I/O port #22H
  4718. B) wait 5-6 clocks
  4719. D) read/write DATA from/to register via I/O port #23
  4720.  
  4721. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  4722.       generated external bus cycle. If You try to read I/O port
  4723.       #22H CPU will generated external bus cycle too. Then index
  4724.       is out of range all operations with port #23H will generate
  4725.       external bus cycle.
  4726.  
  4727. State After Reset:
  4728.     CCR0    00H
  4729.     CCR1    xxxx xxx0B
  4730.     ARR1    000Fh        ; 4Gbyte Non-Caching Region
  4731.     ARR2    0
  4732.     ARR3    0
  4733.     ARR4    0
  4734.  
  4735. format of registers:
  4736.  
  4737. CCR0:
  4738. Bit    Name    Description
  4739. 7    SUS
  4740.     If =1 then enable SUSP# and SUSPA# pins, which used for
  4741.     put CPU in PowerSave mode.
  4742.     If =0 disable
  4743.  
  4744. 6    CKD (Clock Double)
  4745.     If =0 Disable Clock-double mode
  4746.     If =1 Enable Clock-Double mode
  4747.  
  4748. 5    BARB
  4749.     If =1 then enable flushing internal cache when begining
  4750.     HOLD state.
  4751.     IF =0 disable.
  4752.  
  4753. 4    FLUSH
  4754.     If =1 enable input pin FLUSH#
  4755.     if =0 disable
  4756.  
  4757. 3    KEN
  4758.     If =1 enable input pin KEN#
  4759.     if =0 disable
  4760.  
  4761. 2    A20M
  4762.     If =1 enable input pin A20M#
  4763.     if =0 disable
  4764.  
  4765. 1    NC1
  4766.     If=1 then 640KB-1MB area never caching
  4767.     If=0 caching (but see NCRi)
  4768.  
  4769. 0    NC0
  4770.     If=1 then first 64K of each 1MB bounds not caching,
  4771.     when in Real or Virtual8086 mode
  4772.     If =0 caching
  4773.  
  4774.  
  4775. CCR1:
  4776. Bit    Name    Description
  4777. 7    SM4
  4778.     Access Region 4 Control
  4779.     If=1 then Region 4 is non-cachable SMM Memory Space
  4780.     If=0 Region 4 is non-cachable. SMI# input ignored.
  4781.  
  4782. 6    WP3
  4783.     Access Region 3 Control
  4784.     If=1 then Region 3 is write-protected and cachable
  4785.     If=0 Region 3 is non-cachable.
  4786.  
  4787. 5    WP2
  4788.     Access Region 2 Control
  4789.     If=1 then Region 2 is write-protected and cachable
  4790.     If=0 Region 2 is non-cachable.
  4791.  
  4792. 4    WP1
  4793.     Access Region 1 Control
  4794.     If=1 then Region 1 is write-protected and cachable
  4795.     If=0 Region 1 is non-cachable.
  4796.  
  4797. 3    NMAC
  4798.     Main Memory Access
  4799.     If=1 All data accesses which occur within SMI service routine
  4800.     (or then SMAC=1) will access main memory instead of SMM Memory space
  4801.     If=0 No changes in access
  4802.  
  4803. 2    SMAC
  4804.     System Managment memory access
  4805.     If=1 Any access to addresses within SMM memory space cause external bus
  4806.     cycles to be issued with SMADS# output active. SMI# input is ignored.
  4807.  
  4808. 1    SMI
  4809.     Enable SMM Pins
  4810.     If=1 SMI# input/output pin and SMADS# output pin are enabled
  4811.     If=0 Disabled
  4812.  
  4813. 0    Reserved
  4814.  
  4815.  
  4816.  
  4817.  
  4818. ARRi:
  4819. Byte    Bits    Description
  4820. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  4821.         (Reserved for TI486SXLC)
  4822. 1    7-0    Address bits A23-A16 of non-cachable region start
  4823. 2    7-4    Address bits A15-A12 of non-cacheble region start
  4824. 2    3-0    Size of non-cacheble block:
  4825.         0000  Disable NCRi
  4826.         0001  4K
  4827.         0010  8K
  4828.         0011  16K
  4829.         0100  32K
  4830.         0101  64K
  4831.         0110  128K
  4832.         0111  256K
  4833.         1000  512K
  4834.         1001  1M
  4835.         1010  2M
  4836.         1011  4M
  4837.         1100  8M
  4838.         1101  16M
  4839.         1110  32M
  4840.         1111  4G
  4841.  
  4842. ARRi bytes:
  4843.  
  4844.  
  4845.     Byte
  4846. ARRi    0    1    2
  4847. ARR1    C4H    C5H    C6H
  4848. ARR2    C7H    C8H    C9H
  4849. ARR3    CAH    CBH    CCH
  4850. ARR4    CDH    CDH    CEH
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856. ---------------------------------------------------
  4857. APPENDIX    A3
  4858. Texas Instruments  TI486DX2,TI486DX4
  4859. configuration Registers
  4860.  
  4861. Register    Full Register Name        Index    size(bits)
  4862. CCR1    Configuration Control Register #1    C1H    8
  4863. CCR2    Configuration Control Register #2    C2H    8
  4864. CCR3    Configuration Control Register #3    C3H    8
  4865. SMAR    SMM Address Region            CDH-CFH 24
  4866. DIR0    Device Identification register #0    FEH    8
  4867. DIR1    Device Identification register #1    FFH    8
  4868.  
  4869.  
  4870. For access to this register You need to do:
  4871.  
  4872. A) write INDEX_OF_REGISTER to I/O port #22H
  4873. B) wait 5-6 clocks
  4874. D) read/write DATA from/to register via I/O port #23
  4875.  
  4876. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  4877.       CPU generated external bus cycle. If You try to read I/O port
  4878.       #22H CPU will generated external bus cycle too. Then index
  4879.       is out of range all operations with port #23H will generate
  4880.       external bus cycle.
  4881.  
  4882. State After Reset:
  4883.     CCR1    00H
  4884.     CCR2    00H
  4885.     CCR3    00H
  4886.     SMAR    0
  4887.     DIR0    see DIR0 description
  4888.     DIR1    see DIR1 description
  4889.  
  4890.  
  4891. format of registers:
  4892.  
  4893. CCR1:
  4894. Bit    Name    Description
  4895. 7..5        Reserved
  4896.  
  4897. 4    NO_LOCK (Negate LOCK#)
  4898.         If =0  Usuall scheme
  4899.         If =1  previously noncachable locked cycles will be
  4900.         executed as unlocked, result is higher perfomanse.
  4901. 3    MMAC    (Main Memory Access)
  4902.         If =1 then all data access which occur within SMI
  4903.         routine (when SMAC=1) accessing main memory instead
  4904.         SMM space
  4905.         =0 No affects on access
  4906. 2    SMAC    (System Managment Memory Access)
  4907.         If =1 Any access within SMM memory space issued with SMAADS#
  4908.         output active, SMI# ignored
  4909.         =0 No affects on access
  4910. 1    SMI    (Enable SMM pins)
  4911.         If =1 then enable SMI# i/o pin and SMADS# output pin
  4912.         =0 Float it
  4913. 0    RPL    (Enable RPL pins)
  4914.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  4915.         =0 Float it
  4916.  
  4917.  
  4918.  
  4919. CCR2:
  4920. Bit    Name    Description
  4921. 7    SUSP    (Enable Suspend pins)
  4922.         If =1 SUSP# input and SUSPA# output pins enabled
  4923.         =0 Float
  4924. 6    BWRT    (Enable Burst Write Cycle)
  4925.         If =1 enable use of 16byte burst WB cycle
  4926.         =0 disable
  4927. 5    BARB    (Enable cache coherency on Bus Arbitration)
  4928.         If =1 enable write back of all dirty cache data when
  4929.         HOLD is requered and prior to asserting HLDA.
  4930.         =0 isable
  4931. 4    WT1    (Write-Through Region 1)
  4932.         If =1 Forces all writes to the 640KB-1MB region that
  4933.         hit in cache issued on the external bus
  4934. 3    HALT    (Suspend on HALT)
  4935.         If =1 CPU enters suspend mode following execution
  4936.         HLT instruction.
  4937. 2    LOCK_NW (Lock NW bit)
  4938.         If =1 Prohibits changing the state of NW bit in CR0
  4939. 1    WBAK    (Enable WB Cache Interface pins)
  4940.         If =1 then enable INVAL,WM_RST and HITM# pins
  4941.         =0 float it
  4942. 0        Reserved
  4943.  
  4944.  
  4945. CCR3:
  4946. Note: Cyrix Cx486S/D never have CCR3 register.
  4947. Bit    Name    Description
  4948. 7..4        Reserved
  4949. 3    SM_MODE (SMM Mode Select)
  4950.         If =0 then Normal SMM mode (Cyrix style)
  4951.         If =1 then SL-compatible mode
  4952.             (but SMI_LOCK MUST BE 0)
  4953.         Note: For more info refer to
  4954.            "TI486DX2 Microprocessor SM Mode Programming Guide"
  4955.            // Texas Instruments 1995 (literature number SRZU019)
  4956. 2        Reserved
  4957. 1    NMIEN    (NMI Enable)
  4958.         If =1 then NMI enable during SMM
  4959.         If =0 NMI don't recognizing during SMM
  4960. 0      SMI_LOCK (SMM Register Lock)
  4961.         If =1 the following SMM control bits can not
  4962.         be modified:
  4963.              CCR1: bits 1,2,3
  4964.              CCR3: bit 1
  4965.              Any SMAR bits
  4966.         But this bit may be changed in SMM.
  4967.         This bit (SMI_LOCK) clearing RESET only.
  4968.  
  4969.  
  4970. SMAR:
  4971. (Index CDh)
  4972. Bit    Description
  4973. 7..0    A31..A24 bits of starting adress of SMM region
  4974. (Index CEh)
  4975. Bit    Description
  4976. 7..0    A23..A16 bits of starting adress of SMM region
  4977. (Index CFh)
  4978. Bit    Description
  4979. 7..4    A15..A12 bits of starting adress of SMM region
  4980. 3..0    Size of SMM region:
  4981.     0000    SMM region disabled
  4982.     0001    4K
  4983.     0010    8K
  4984.     0011    16K
  4985.     0100    32K
  4986.     0101    64K
  4987.     0110    128K
  4988.     0111    256K
  4989.     1000    512K
  4990.     1001    1M
  4991.     1010    2M
  4992.     1011    4M
  4993.     1100    8M
  4994.     1101    16M
  4995.     1110    32M
  4996.     1111    4K
  4997.  
  4998.  
  4999. DIR0:
  5000. Bit    Description
  5001. 7..0    (Device Identification)
  5002.     for TI486DX2  =     1Bh  (compare with Cyrix's DIR0)
  5003.     for TI486DX4  =     81h
  5004.  
  5005.  
  5006. DIR1:
  5007. Bit    Name    Description
  5008. 7    MID    Manafacturer ID
  5009.         0 = Cyrix
  5010.         1 = Texas Instruments  (support starting TI486DX2 eB0 steping)
  5011. 6..4    SID    Stepping Identificator
  5012. 3..0    RID    Revision Identification
  5013.  
  5014. ----------------------------------------------
  5015. APPENDIX    B
  5016. Codes which returned after Reset in EDX
  5017.  
  5018.                   DH     DL
  5019. Type of CPU   Steppin       Model ID   Revision
  5020.  
  5021. i386DX        A         (00h)    ???
  5022.         B0-B10          03h    03h
  5023.         D0            05h
  5024.         D1-D2            08h
  5025.         E0,F0            08h
  5026.  
  5027. Am386DX/DXL    A          03h    05h
  5028.         B            08h
  5029.  
  5030. i386SX        A0          23h    04h
  5031.         B            05h
  5032.         C,D,E            08h
  5033.  
  5034. Am386SX/SXL    A1          23h    05h
  5035.         B            08h
  5036.  
  5037. Intel386CXSA    A          23h    09h
  5038.  
  5039. Intel386CXSB    A          23h    09h
  5040.  
  5041. i386EX        A          23h    09h
  5042.  
  5043. Intel386SXSA    ?          23h    09h
  5044.  
  5045. i376        A0          33h    05h
  5046.         B            08h
  5047.  
  5048.  
  5049.  
  5050. i386SL        A0-A3          43h    0xh (05H)
  5051.         B0-B1            1xh
  5052.  
  5053. RapidCAD (tm)    A          03h    40h
  5054.         B            41h
  5055.  
  5056. IBM 386SLC    A          A3h    xxh
  5057.  
  5058. Cx486SLC    A          04h    10h
  5059.  
  5060. TI486SLC/DLC/e    A          04h    10h
  5061.         B            11h
  5062.  
  5063. TI486SXL/SXLC    A          04h    10h
  5064.         B            11h
  5065.  
  5066. i486DX        A0/A1          04h    00h
  5067.         B2-B6            01h
  5068.         C0            02h
  5069.         C1            03h
  5070.         D0            04h
  5071.         cA2,cA3            10h
  5072.         cB0,cB1            11h
  5073.         cC0            13h
  5074.         aA0,aA1            14h    ; SL Enhanced
  5075.         aB0            15h    ; SL Enhanced
  5076.  
  5077. Am486DX        any          04h    12h
  5078.  
  5079. UMC U5SD    any          04h    1xh
  5080.  
  5081. i486SX        A0          04h    20h
  5082.         B0            22h
  5083.         ??            23h    ; SL Enhanced 1994 ???
  5084.         gAx            24h
  5085.         cA0            27h
  5086.         cB0            28h
  5087.         aA0,aA1            2Ah    ; SL Enhanced
  5088.         aB0,aC0            2Bh    ; SL Enhanced
  5089.  
  5090. i487SX        A0          04h    20h
  5091.         B0            21h
  5092.  
  5093. UMC U5S        any          04h    23h
  5094.  
  5095. UMC U5SX 486-A    any          04h    23h
  5096.  
  5097. UMC U5SD    any          04h    23h
  5098.  
  5099. Cx5x86        0,rev 1-      04h    29h    ; core/bus clk=2/1  +clones
  5100. Cx5x86        0,rev 1-      04h    2Bh    ; core/bus clk=2/1  +clones
  5101. Cx5x86        0,rev 1-      04h    2Dh    ; core/bus clk=3/1  +clones
  5102. Cx5x86        0,rev 1-      04h    2Fh    ; core/bus clk=3/1  +clones
  5103.  
  5104.  
  5105. i486DX2 &    A0-A2          04h    32h
  5106. OverDrive (tm)    B1            33h
  5107.         aA0,aA1            34h    ; SL Enhanced
  5108.         aB0,aC0            35h    ; SL Enhanced
  5109.  
  5110. Am486DX2    any          04h    32h    ; Include 80MHz
  5111.  
  5112. Am486DXL2    any          04h    32h
  5113.  
  5114. Am486DX4    any          04h    32h    ; Non Ehnanced
  5115.         any          04h    84h    ; Enhanced in WT mode
  5116.                   04h    94h    ; Enhanced in WB mode
  5117.  
  5118. UMC U486DX2    any          04h    3xh
  5119.  
  5120. UMC U486SX2    any          04h    5xh
  5121.  
  5122. i486SL        A          04h    40h
  5123.         ??            41h
  5124.  
  5125. i486SX2        aC0          04h    5Bh    ; SL Enhanced
  5126.  
  5127. IntelSX2 (tm)    A          04h    5xh
  5128. OverDrive (tm)
  5129.  
  5130. WB Enh IntelDX2 A          04h    70h    ; in WB mode
  5131. (P24D)                    36h    ; in WT mode
  5132.  
  5133. IBM BL486DX2    A          04h    80h   ; PRELIMINARY
  5134.  
  5135. IntelDX4 (tm)    A          04h    80h
  5136.  
  5137. TI  TI486DX2    any          04h    80h
  5138.  
  5139. TI  TI486DX4    any          04h    81h
  5140.  
  5141. IntelDX4 (tm)    A          14h    80h   ; DX4ODPR     (5V IntelDX4)
  5142. OverDrive (tm)
  5143.  
  5144. Cx5x86        0,rev 2+      04h    90h
  5145.  
  5146. Write-Back Enh. A          04h    83h   ; WT Mode
  5147. IntelDX4 (tm)                90h   ; WB mode
  5148.  
  5149. AMD Am5x86    A          04h    84h   ; x3, WT mode
  5150.                     94h   ; x3, WB mode
  5151.                     E4h   ; x4, WT mode
  5152.                     F4h   ; x4, WB mode
  5153.  
  5154. IBM  486SLC    A          A4h    0xh
  5155.  
  5156. IBM  486SLC2    Ax          A4h    1xh
  5157.         Bx            2xh
  5158.         ??            3xh
  5159.  
  5160. IBM  486BLX3    A          84h    xxh
  5161.  
  5162. Cyrix M5    all          00h    05h
  5163. (Cx486S/D)
  5164.  
  5165. Cyrix M6    all          00h    06h
  5166. (Cx486DX)
  5167.  
  5168. Cyrix M7    all          00h    07h
  5169. (Cx486DX2)
  5170.  
  5171. Cyrix M8    all          00h    08h
  5172. (Cx486DX4)
  5173.  
  5174. Am5k86        all          05h    0xh    ; AMD SSA/5
  5175.         A          05h    00h
  5176.         all          05h    1xh    ; AMD K5
  5177.  
  5178. Pentium (P5)    Ax          05h    0xh
  5179.         B1          05h    13h    ; Have FPU bug!
  5180.         C1          05h    15h    ; Have FPU bug!
  5181.         D1          05h    17h    ; Never have FPU bug!!
  5182.  
  5183. Pentium (P54LM) Ax          05h    25h    ; 2.9V for Notebooks.
  5184.  
  5185. Pentium (P54C)    any          05h    2xh
  5186.         B1          05h    21h    ; Have FPU bug!
  5187.         B3          05h    22h    ; Have FPU bug!
  5188.         B5          05h    24h    ; Have FPU bug!
  5189.         C1          05h    25h    ; No   FPU bug!!
  5190.         C2            25h
  5191.         mA1            25h
  5192.         cB1            2Bh    ; 120,133 MHz
  5193.         mcB1            2Bh
  5194.                     ??h    ; 150,166 MHz
  5195. #PHG
  5196.         cC0            2Ch    ; 150,166 MHz
  5197.         E0            26h    ; 75,90,100 MHz
  5198.         mA4            70h    ; 75,90,100 MHz VRT
  5199.         mcC0            2Ch    ; 120,133 MHz
  5200.  
  5201. #end
  5202.  
  5203.  
  5204. Pentium (P54CQS) C2          05h    25h
  5205.  
  5206. Pentium Overdrive B1          15h    31h    ; PODP5V
  5207. (Vcc=5V)(P24T)      B2          15h    31h
  5208.           C0          15h    32h
  5209.  
  5210. Cx6x86                  05h    30h    ; core/bus = 1/1
  5211.                   05h    32h    ; core/bus = 1/1
  5212.                   05h    31h    ; core/bus = 2/1
  5213.                   05h    33h    ; core/bus = 2/1
  5214.                   05h    34h    ; core/bus = 3/1
  5215.                   05h    36h    ; core/bus = 3/1
  5216.                   05h    35h    ; core/bus = 4/1
  5217.                   05h    37h    ; core/bus = 4/1
  5218.  
  5219.  
  5220. ;Pentium Overdrive          15h    2xh
  5221. ;(Vcc=3.3V) (P24CT)
  5222.  
  5223. Pentium OverDrive (P54T)      15h    4xh
  5224.  
  5225. Intel Pentium OverDrive          25h    2xh
  5226. (P54M)
  5227.  
  5228. Pentium     Pro (P6)   ?          06h    0xh ; Engineering Sample 133MHz 0.6mkm
  5229.                   06h    11h ; Engineering Sample 150MHz
  5230.             B0          06h    11h ;    133,150 MHz
  5231.             C0          06h    12h ;    150 MHz
  5232.             sA0          06h    16h ;    166,180,200 MHz
  5233.  
  5234. OverDrive for Socket 8    (P6T) 16h    3xh ;
  5235.  
  5236. Note: For detection Cyrix's chips refer to APPENDIX A1.
  5237. --------------------------------------------
  5238. APPENDIX C0
  5239. iCOMP index for Intel's Microprocessors
  5240.  
  5241.  
  5242. i386SX-20        32
  5243. i386SX-25        39
  5244. i386SL-25        41
  5245. i386DX-25        49
  5246. i386DX-33        68
  5247. i486SX-20        78
  5248. i486SX-25        100  ; Base model for test iCOMP=100 by define
  5249. i486DX-25        122
  5250. i486SX-33        136
  5251. i486DX-33        166
  5252. i486DX2-20/40        166
  5253. IntelSX2-25/50        180
  5254. i486DX2-25/50        231
  5255. i486DX-50        249
  5256. IntelDX4-20/60        258
  5257. i486DX2-33/66        297
  5258. Pentium OverDrive-20/50 314  ; P24T
  5259. IntelDX4-25/75        319  ; P24C
  5260. IntelDX4-33/100        435  ; P24C
  5261. Pentium OverDrive-25/63 443  ; P24T
  5262. Pentium-(510\60)    510  ; P5
  5263. Pentium-(567\66)    567  ; P5
  5264. Pentium OverDrive-33/83 581  ; P24T
  5265. Pentium-(610\75)    610  ; P54C,P54LM
  5266. Pentium-(735\90)    735  ; P54C,P54LM
  5267. Pentium-(815\100)    815  ; P54C
  5268. Pentium-(1000\120)    1000 ; P54CSQ
  5269. Pentium-(133)        1110 ; P54CSQ
  5270.  
  5271. ----------------------------------------------
  5272. APPENDIX C1
  5273. Cyrix Microprocessors Relative Perfomance
  5274.  
  5275. Cyrix Inc. Used for declaration of perfomance of
  5276. theys microprocessors tests based on PC Bench 8.0
  5277. and normalization.
  5278.  
  5279. CPU        Perfomance Scores
  5280. Cx486SLC-25    36
  5281. Cx486SLC-33    39
  5282. Cx486SLC2-50    40
  5283. Cx486DLC-33    69
  5284. Cx486DLC-40    83
  5285. Cx486DX-33    100    ; <--- Base Point
  5286. Cx486DX-40    118
  5287. Cx486DX2-50    139
  5288. Cx486DX-50    148
  5289. Cx486DX2-66    179
  5290. Cx486DX2-V80    209
  5291.  
  5292.  
  5293.  
  5294.  
  5295. ------------------------------------------------
  5296. APPENDIX D0
  5297. Pentium P54C+ Build-in APIC
  5298. (Advanced programmable Interrupt Controller)
  5299.  
  5300.  
  5301. Base Address of Build-in APIC in memory location
  5302. is 0FEE00000H.
  5303.  
  5304. Map of APIC REgisters:
  5305.  
  5306. Offset (hex)    Description            Read/Write state
  5307. 0        Reserved
  5308. 10        Reserved
  5309. 20        Local APIC ID            R/W
  5310. 30        Local APIC Version        R
  5311. 40-70        Reserved
  5312. 80        Task Priority Register        R/W
  5313. 90        Arbitration Priority Register    R
  5314. A0        Processor Priority Register    R
  5315. B0        EOI Register            W
  5316. C0        Remote read            R
  5317. D0        Logical Destination        R/W
  5318. E0        Destination Format Register    0..27  R
  5319.                         28..31 R/W
  5320. F0        Spurious Interrupt Vector Reg.    0..3   R
  5321.                         4..9   R/W
  5322. 100-170        ISR  0-255            R
  5323. 180-1F0        TMR  0-255            R
  5324. 200-270        IRR  0-255            R
  5325. 280        Error Status Register        R
  5326. 290-2F0        Reserved
  5327. 300        Interrupt Command Reg. (0-31)    R/W
  5328. 310        Interrupt Command Reg. (32-63)    R/W
  5329. 320        Local Vector Table (Timer)    R/W
  5330. 330-340        Reserved
  5331. 350        Local Vector Table (LINT0)    R/W
  5332. 360        Local Vector Table (LINT1)    R/W
  5333. 370        Local Vector Table (ERROR)    R/W
  5334. 380        Initial Count Reg. for Timer    R/W
  5335. 390        Current Count of Timer        R
  5336. 3A0-3D0        Reserved
  5337. 3E0        Timer Divide Configuration Reg. R/W
  5338. 3F0        Reserved
  5339.  
  5340.  
  5341. Note: Pentium-120MHz (Step C2)    Never have APIC
  5342.  
  5343. ---------------------------------------------------
  5344. APPENDIX D1   INTEL 386/486SL REGISTERS
  5345.  
  5346. Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
  5347.       self CPU and 82360SL chip.
  5348.  
  5349.  
  5350. [i386SL]
  5351. Note: address of register in Normal I/O space
  5352.  
  5353. Name of Register    Address        Default Value    Where placed    Size
  5354. CPUPWRMODE        22h        0        CPU        16
  5355. CFGSTAT            23h        0        82360SL        8
  5356. CFGINDEX        24h        0        82360SL        16
  5357. CFGDATA            25h        xxh        82360SL        16
  5358. EMSCNTLREG        28h        0        CPU        8
  5359. EMSINDEXREG        2Ah        0        CPU        16
  5360. EMSDPREG        2Ch        xxh        CPU        16
  5361. PORT92            92h        0        CPU        8
  5362. PORT102               102h        0        CPU        8
  5363. FAIL SAFE NMI CTRL     461h        0        CPU        8
  5364. The followed ports visible only when they enabled,
  5365. Any writes to this ports caused the action it named.
  5366. FAST CPU RESET           EFh        N/A        82360SL        8
  5367. FAST A20 GATE           EEh        N/A        82360SL        8
  5368. SLOW CPU           F4h        N/A        CPU        8
  5369. FAST CPU           F5h        N/A        CPU        8
  5370. SFS DISABLE           F9h        N/A        CPU        8
  5371. SFS ENABLE           FBh        N/A        CPU        8
  5372.  
  5373.  
  5374. Format of CPUPWRMODE register (i386SL):
  5375. Bits    Name    Description
  5376. 15    DT    If Unlock Status {  // See bit 0 of this register
  5377.             if bit=0 then access to 82360SL
  5378.             if bit=1 then access to CPUPWRMODE register
  5379.                 }
  5380.         If Lock Staus    {   // i.e.SB=1
  5381.             (De-Turbo Select Bit) Selected clock speed
  5382.             If bit=0 then EFI/2
  5383.             If bit=1 then EFI/4
  5384.                 }
  5385. 14    0    Reserved
  5386. 13..11    IMCPC    (Idle MCP Clock)
  5387.         13.12.11    Description
  5388.         000    EFI
  5389.         001    EFI/2
  5390.         010    EFI/4
  5391.         011    EFI/8
  5392.         100    EFI/16
  5393.         101    Reserved
  5394.         110    Reserved
  5395.         111    Stop Clock
  5396. 10,9    SLC    (Slow CPU clock)
  5397.         10.9    Description
  5398.         00    EFI
  5399.         01    EFI/2
  5400.         10    EFI/4
  5401.         11    EFI?8
  5402. 8    CPUCNFG
  5403.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  5404. 7    FD    (Flash Disk Enable)
  5405.         If bit=1 then phisical addresses D0000H - DFFFFh
  5406.         automatically never caching.
  5407. 6    0    Reserved
  5408. 5,4    FCC    (Fast CPU clock)
  5409.         5.4    Description
  5410.         00    EFI
  5411.         01    EFI/2
  5412.         10    EFI/4
  5413.         11    EFI/8
  5414. 3,2    US    (Unit Select)
  5415.         Select Unit of 82360SL which will be accessable through 23h-25h
  5416.         I/O Ports
  5417.         3.2    Description
  5418.         00    On-Board Memory Controller
  5419.         01    Cache Unit
  5420.         10    Internal Bus Unit
  5421.         11    External Bus Unit
  5422. 1    UE    (Unit Enable)
  5423.         If =1 Enable to Access Units
  5424.         else enable to access System bus.
  5425. 0    SB    (Status Bit)
  5426.         If =0 Enable access to CPUPWRMODE register
  5427.         If =1 Disable
  5428.  
  5429.  
  5430.  
  5431. Format of EMSCNTLREG:
  5432. Bits    Description
  5433. 7    (Global Enable)
  5434.     If =1 EMS enable
  5435. 6    Valid bit
  5436. 5    EMSDP Status Bit (Read Only)
  5437. 4..2    Reserved
  5438. 1..0    Active EMS Set (0-3)
  5439.  
  5440.  
  5441. Format of EMSINDEXREG:
  5442. Bits    Description
  5443. 15..10    Reserved
  5444. 9..8    EMS set (0-3)
  5445. 7..6    Reserved
  5446. 5..0    EMS Page Register Index (0-64)
  5447.  
  5448. Format of EMSDPREG:
  5449. Bits    Description
  5450. 15    This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
  5451. 14    EMS Valid bit
  5452. 13..11    reserved
  5453. 10..0    Address lines A24..A14 for page selected by EMSINDEXREG
  5454.  
  5455. Important Note:
  5456. i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
  5457. Configuration Space. This Register contain  Stepping Info of i386SL.
  5458. Stepping    Signature Register    DX register after reset
  5459. A0        4300h            4310h
  5460. A1        4300h            4310h
  5461. A2        4301h            4310h
  5462. A3        4302h            4310h
  5463. B0        4310h            4311h
  5464. B1        4311h            4311h
  5465.  
  5466.  
  5467.  
  5468. [i486SL]
  5469. Note: address of register in Normal I/O space
  5470.  
  5471. Name of Register    Address        Default Value    Where placed    Size
  5472. CPUPWRMODE        22h        100H        CPU        16
  5473. CFGSTAT            23h        0        82360SL        8
  5474. CFGINDEX        24h        0        82360SL        16
  5475. CFGDATA            25h        xxh        82360SL        16
  5476. PORT92            92h        0        CPU        8
  5477. PORT102               102h        0        CPU        8
  5478. FAIL SAFE NMI CTRL     461h        0        CPU        8
  5479. The followed ports visible only when they enabled
  5480. FAST CPU RESET           EFh        N/A        82360SL        8
  5481. FAST A20 GATE           EEh        N/A        82360SL        8
  5482. SLOW CPU           F4h        N/A        CPU        8
  5483. FAST CPU           F5h        N/A        CPU        8
  5484. SFS DISABLE           F9h        N/A        CPU        8
  5485. SFS ENABLE           FBh        N/A        CPU        8
  5486.  
  5487.  
  5488.  
  5489. Format of CPUPWRMODE register (i486SL):
  5490. Bits    Name    Description
  5491. 15    DT    If Unlock Status {  // See bit 0 of this register
  5492.             if bit=0 then access to 82360SL
  5493.             if bit=1 then access to CPUPWRMODE register
  5494.                 }
  5495.         If Lock Staus    {   // i.e.SB=1
  5496.             (De-Turbo Select Bit) Selected clock speed
  5497.             If bit=0 then EFI/2
  5498.             If bit=1 then EFI/4
  5499.                 }
  5500. 14..13    0    Reserved
  5501. 12    FPUERROR
  5502.         This bit controlled access to I/O port 0F0h,
  5503.         if =0 then access to internal F0h port,
  5504.         If =1 then access ISA bus.
  5505. 11..9    0    Reserved
  5506. 8    CPUCNFG
  5507.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  5508. 7    0    RESERVED
  5509. 6,5    FCC    (Fast CPU clock)
  5510.         5.4    Description
  5511.         00    CPUCLK=definition=EFI/2
  5512.         01    CPUCLK/2
  5513.         10    CPUCLK/4
  5514.         11    CPUCLK/8
  5515. 4    0    Reserved
  5516. 3,2    US    (Unit Select)
  5517.         Select Unit of 82360SL which will be accessable through 23h-25h
  5518.         I/O Ports
  5519.         3.2    Description
  5520.         00    On-Board Memory Controller
  5521.         01    Reserved
  5522.         10    Internal Bus Unit
  5523.         11    External Bus Unit
  5524. 1    UE    (Unit Enable)
  5525.         If =1 Enable to Access Units
  5526.         else enable to access System bus.
  5527. 0    SB    (Status Bit)
  5528.         If =0 Enable access to CPUPWRMODE register
  5529.         If =1 Disable
  5530.  
  5531.  
  5532.  
  5533. Important Note:
  5534. i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
  5535. Configuration Space. This Register contain  Stepping Info of i486SL.
  5536. Format Of this register provided below:
  5537. Bits    Description
  5538. 15..12    Member of Family (4h - SL)
  5539. 11..8    Family    (4h - 486 family)
  5540. 7..0    Revision Name (Not Same as in DX after reset)
  5541.  
  5542.  
  5543.  
  5544.  
  5545. ---------------------------------------------
  5546. APPENDIX E
  5547. Pentium (tm) Processor Pairing Instruction
  5548.  
  5549. Pentium (tm) is superscalar microprocessor
  5550. i.e. it may execute >1 instruction per CLK
  5551. cycle. It may execute maximum 2 instruction
  5552. per cycle.It have two integer pipes to execute
  5553. instruction. This pipes not same, and some
  5554. instruction may pairing (i.e. execute together)
  5555. (only if not link with this 2 instruction)
  5556. only in U pipe, some other only in V pipe, other
  5557. in any pipe,other absolutely not pairing and they
  5558. executed on U pipe only.
  5559.  
  5560. ------ Integer Part
  5561.  
  5562. Note:
  5563.     PU - is pairable if issued to U pipe
  5564.     PV - is pairable if issued to V pipe
  5565.     UV - pairable in either pipe
  5566.  
  5567.  
  5568.  
  5569. ADC    Reg,Reg        PU
  5570.     Reg,Mem        PU
  5571.     Reg,Imm        PU
  5572.     Mem,Reg        PU
  5573.     Mem,Imm        PU
  5574. ADD    Reg,Reg        UV
  5575.     Reg,Mem        UV
  5576.     Reg,Imm        UV
  5577.     Mem,Reg        UV
  5578.     Mem,Imm        UV
  5579. AND    Reg,Reg        UV
  5580.     Reg,Mem        UV
  5581.     Reg,Imm        UV
  5582.     Mem,Reg        UV
  5583.     Mem,Imm        UV
  5584. CALL    direct        PV
  5585. CMP    Reg,Reg        UV
  5586.     Reg,Mem        UV
  5587.     Reg,Imm        UV
  5588.     Mem,Reg        UV
  5589.     Mem,Imm        UV
  5590. DEC    Reg        UV
  5591.     Mem        UV
  5592. INC    Reg        UV
  5593.     Mem        UV
  5594. Jcc    any        PV
  5595. JMP    Short        PV
  5596.     Direct        PV
  5597. LEA    Reg,Mem        UV
  5598. MOV    Reg,Reg/Mem/Imm UV
  5599.     Mem,Reg        UV
  5600. NOP            UV
  5601. OR    Reg,Reg        UV
  5602.     Reg,Mem        UV
  5603.     Reg,Imm        UV
  5604.     Mem,Reg        UV
  5605.     Mem,Imm        UV
  5606. POP    Reg        UV
  5607. PUSH    Reg        UV
  5608.     Imm        UV
  5609. Rotates/Shifts:
  5610.     Reg,1        PU
  5611.     Mem,1        PU
  5612.     Reg,Imm        PU
  5613.     Mem,Imm        PU
  5614. SUB    Reg,Reg        UV
  5615.     Reg,Mem        UV
  5616.     Reg,Imm        UV
  5617.     Mem,Reg        UV
  5618.     Mem,Imm        UV
  5619. TEST    Reg,Reg        UV
  5620.     Mem,Reg        UV
  5621.     Acc,Imm        UV
  5622. XOR    Reg,Reg        UV
  5623.     Reg,Mem        UV
  5624.     Reg,Imm        UV
  5625.     Mem,Reg        UV
  5626.     Mem,Imm        UV
  5627.  
  5628.  
  5629.  _____    Floating Part
  5630.  
  5631. Note:    FX  -  Pairing with FXCH
  5632.     (All other never pairing)
  5633.  
  5634. FABS            FX
  5635. FADD            FX
  5636. FADDP            FX
  5637. FCHS            FX
  5638. FCOM            FX
  5639. FCOMP            FX
  5640. FDIV/R/P/RP        FX
  5641. FLD   m32,m64,ST(i)    FX    Note: FLD m80 not pairing
  5642. FMUL/P            FX
  5643. FSUB/P/R/RP        FX
  5644. FTST            FX
  5645. FUCOM/P/PP        FX
  5646.  
  5647.  
  5648.  
  5649. For more information refer to:
  5650. 1) Optimization for Intel's 32-Bit Processors
  5651.   (Application Note AP-500)
  5652.   Gary CArleton)
  5653.   // Intel Corp. 1993
  5654.   // Order Number 241799
  5655. 2) Supplement to the Pentium (tm) Processor User's
  5656.    Manual
  5657.   // Intel Corp. 1993.
  5658.  
  5659.  
  5660. ------------------------------------------------------------
  5661. APPENDIX  F0    NON FP OPCODES
  5662.  
  5663.  
  5664. Base Format of opcodes:
  5665. <Basecode> <Postbyte> <offset> <immediate_operands>
  5666.  
  5667.  
  5668. Format of Postbyte:
  5669.  
  5670.   MM RRR MMM
  5671.  
  5672. MM  - Memory addresing mode
  5673. RRR - Register operand address
  5674. MMM - Memory operand address
  5675.  
  5676.  
  5677. RRR    Register Names
  5678. Fields    8bit    16bit    32bit
  5679. 000    AL    AX    EAX
  5680. 001    CL    CX    ECX
  5681. 010    DL    DX    EDX
  5682. 011    BL    BX    EBX
  5683. 100    AH    SP    ESP
  5684. 101    CH    BP    EBP
  5685. 110    DH    SI    ESI
  5686. 111    BH    DI    EDI
  5687.  
  5688.  
  5689. 16bit memory (No 32 bit memory address prefix):
  5690. MMM    Default MM  Field
  5691. Field    Sreg    00        01        10        11=MMM is reg
  5692. 000    DS    [BX+SI]        [BX+SI+O8]    [BX+SI+O16]
  5693. 001    DS    [BX+DI]        [BX+DI+O8]    [BX+SI+O16]
  5694. 010    SS    [BP+SI]        [BP+SI+O8]    [BP+SI+O16]
  5695. 011    SS    [BP+DI]        [BP+DI+O8]    [BP+DI+O16]
  5696. 100    DS    [SI]        [SI+O8]        [SI+O16]
  5697. 101    DS    [DI]        [DI+O8]        [DI+O16]
  5698. 110    SS    [O16]        [BP+O8]        [BP+O16]
  5699. 111    DS    [BX]        [BX+O8]        [BX+O16]
  5700. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  5701.  
  5702. 32bit memory (Has 67h 32 bit memory address prefix):
  5703. MMM    Default MM  Field
  5704. Field    Sreg    00        01        10        11=MMM is reg
  5705. 000    DS    [EAX]        [EAX+O8]    [EAX+O32]
  5706. 001    DS    [ECX]        [ECX+O8]    [ECX+O32]
  5707. 010    DS    [EDX]        [EDX+O8]    [EDX+O32]
  5708. 011    DS    [EBX]        [EBX+O8]    [EBX+O32]
  5709. 100 see SIB    [SIB]        [SIB+O8]    [SIB+O32]
  5710. 101    SS    [O32]        [EBP+O8]    [EBP+O32]
  5711. 110    DS    [ESI]        [ESI+O8]    [ESI+O32]
  5712. 111    DS    [EDI]        [EDI+O8]    [EDI+O32]
  5713. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  5714.  
  5715.  
  5716. SIB is (Scale/Base/Index):
  5717.   SS  BBB  III
  5718. Note: SIB address calculated as :
  5719.     <SIB address>=<Base>+<Index>*(2^(Scale))
  5720.  
  5721. Field    Default Base
  5722. BBB    Sreg    Register    Note
  5723. 000    DS    EAX
  5724. 001    DS    ECX
  5725. 010    DS    EDX
  5726. 011    DS    EBX
  5727. 100    SS    ESP
  5728. 101    DS    O32        If MM=00   (Postbyte)
  5729.     SS    EBP        If MM<>00  (Postbyte)
  5730. 110    DS    ESI
  5731. 111    DS    EDI
  5732.  
  5733. Field    Index
  5734. III    register    Note
  5735. 000    EAX
  5736. 001    ECX
  5737. 010    EDX
  5738. 011    EBX
  5739. 100            Never Index SS can be 00
  5740. 101    EBP
  5741. 110    ESI
  5742. 111    EDI
  5743.  
  5744. Field    Scale coefficient
  5745. SS    =2^(SS)
  5746. 00    1
  5747. 01    2
  5748. 10    4
  5749. 11    8
  5750.  
  5751.  
  5752. Note:
  5753.       <No comments> this code are for 8086 and all other processors
  5754.       NECs  : for NEC/Sony V20/V30/V40/V50 and all clones and upgrades
  5755.       186+  : for 186/188 and higher
  5756.       286+  : for 80286 and higher
  5757.       386+  : for 80386 and higher
  5758.       486+  : for i486 and higher
  5759.       Pentium : for Pentiym
  5760.       <specified> : specified
  5761.  
  5762.  
  5763.  
  5764.  
  5765. Main Table [TABLE00]:
  5766.  
  5767. 00    ADD    mem8,reg8
  5768. 01    ADD    mem,reg
  5769. 02    ADD    reg8,mem8
  5770. 03    ADD    reg,mem
  5771. 04    ADD    AL,imm8
  5772. 05    ADD    AX,imm
  5773. 06    PUSH    ES
  5774. 07    POP    ES
  5775. 08    OR    mem8,reg8
  5776. 09    OR    mem,reg
  5777. 0A    OR    reg8,mem8
  5778. 0B    OR    reg,mem
  5779. 0C    OR    AL,imm8
  5780. 0D    OR    AX,imm
  5781. 0E    PUSH    CS
  5782. 0F    POP    CS    ; 8088 non CMOS versions
  5783.     >>>  TABLE 01    ; NECs & 286+
  5784.     Invalid Opcode    ; 186/188
  5785.  
  5786. 10    ADC    mem8,reg8
  5787. 11    ADC    mem,reg
  5788. 12    ADC    reg8,mem8
  5789. 13    ADC    reg,mem
  5790. 14    ADC    AL,imm8
  5791. 15    ADC    AX,imm
  5792. 16    PUSH    SS
  5793. 17    POP    SS
  5794. 18    SBB    mem8,reg8
  5795. 19    SBB    mem,reg
  5796. 1A    SBB    reg8,mem8
  5797. 1B    SBB    reg,mem
  5798. 1C    SBB    AL,imm8
  5799. 1D    SBB    AX,imm
  5800. 1E    PUSH    DS
  5801. 1F    POP    DS
  5802.  
  5803.  
  5804. 20    AND    mem8,reg8
  5805. 21    AND    mem,reg
  5806. 22    AND    reg8,mem8
  5807. 23    AND    reg,mem
  5808. 24    AND    AL,imm8
  5809. 25    AND    AX,imm
  5810. 26    ES:    segment prefix
  5811. 27    DAA
  5812. 28    SUB    mem8,reg8
  5813. 29    SUB    mem,reg
  5814. 2A    SUB    reg8,mem8
  5815. 2B    SUB    reg,mem
  5816. 2C    SUB    AL,imm8
  5817. 2D    SUB    AX,imm
  5818. 2E    CS:    segment prefix
  5819. 2F    DAS
  5820.  
  5821. 30    XOR    mem8,reg8
  5822. 31    XOR    mem,reg
  5823. 32    XOR    reg8,mem8
  5824. 33    XOR    reg,mem
  5825. 34    XOR    AL,imm8
  5826. 35    XOR    AX,imm
  5827. 36    SS:    segment prefix
  5828. 37    AAA
  5829. 38    CMP    mem8,reg8
  5830. 39    CMP    mem,reg
  5831. 3A    CMP    reg8,mem8
  5832. 3B    CMP    reg,mem
  5833. 3C    CMP    AL,imm8
  5834. 3D    CMP    AX,imm
  5835. 3E    DS:    segment prefix
  5836. 3F    AAS
  5837.  
  5838. 40    INC    AX
  5839. 41    INC    CX
  5840. 42    INC    DX
  5841. 43    INC    BX
  5842. 44    INC    SP
  5843. 45    INC    BP
  5844. 46    INC    SI
  5845. 47    INC    DI
  5846. 48    DEC    AX
  5847. 49    DEC    CX
  5848. 4A    DEC    DX
  5849. 4B    DEC    BX
  5850. 4C    DEC    SP
  5851. 4D    DEC    BP
  5852. 4E    DEC    SI
  5853. 4F    DEC    DI
  5854.  
  5855.  
  5856. 50    PUSH    AX
  5857. 51    PUSH    CX
  5858. 52    PUSH    DX
  5859. 53    PUSH    BX
  5860. 54    PUSH    SP
  5861. 55    PUSH    BP
  5862. 56    PUSH    SI
  5863. 57    PUSH    DI
  5864. 58    POP    AX
  5865. 59    POP    CX
  5866. 5A    POP    DX
  5867. 5B    POP    BX
  5868. 5C    POP    SP
  5869. 5D    POP    BP
  5870. 5E    POP    SI
  5871. 5F    POP    DI
  5872.  
  5873. 60    PUSHA            ;NECs & 186+
  5874. 61    POPA            ;NECs & 186+
  5875. 62    BOUND    reg,mem        ;NECs & 186+
  5876. 63    ARPL    reg,mem        ;286+ PM
  5877. 64    FS:    segment prefix    ;386+
  5878. 65    GS:    segment prefix    ;386+
  5879. 66    Memory access size prefix    ;386+
  5880. 67    Operands size prefix        ;386+
  5881. 68    PUSH    imm        ;NECs & 186+
  5882. 69    IMUL    reg,imm,mem    ;NECs & 186+
  5883. 6A    PUSH    imm8        ;NECs & 186+
  5884. 6B    IMUL    reg,imm8,mem    ;NECs & 186+
  5885. 6C    INSB            ;186+
  5886. 6D    INS            ;186+
  5887. 6E    OUTSB            ;186+
  5888. 6F    OUTS            ;186+
  5889.  
  5890. 70    JO    rel8
  5891. 71    JNO    rel8
  5892. 72    JC    rel8
  5893. 73    JNC    rel8
  5894. 74    JZ    rel8
  5895. 75    JNZ    rel8
  5896. 76    JNA    rel8
  5897. 77    JA    rel8
  5898. 78    JS    rel8
  5899. 79    JNS    rel8
  5900. 7A    JP    rel8
  5901. 7B    JNP    rel8
  5902. 7C    JL    rel8
  5903. 7D    JNL    rel8
  5904. 7E    JNG    rel8
  5905. 7F    JG    rel8
  5906.  
  5907.  
  5908. 80    code extention [1]
  5909. 81    code extention [2]
  5910. 82    code extention [3]
  5911. 83    code extention [4]
  5912. 84    TEST    mem8,reg8
  5913. 85    TEST    mem,reg
  5914. 86    XCHG    mem8,reg8
  5915. 87    XCHG    mem,reg
  5916. 88    MOV    mem8,reg8
  5917. 89    MOV    mem,reg
  5918. 8A    MOV    reg8,mem8
  5919. 8B    MOV    reg,mem
  5920. 8C    code extention [5]
  5921. 8D    LEA    reg,mem
  5922. 8E    code extention [6]
  5923. 8F    code extention [7]
  5924.  
  5925. 90    NOP
  5926. 91    XCHG    AX,CX
  5927. 92    XCHG    AX,DX
  5928. 93    XCHG    AX,BX
  5929. 94    XCHG    AX,SP
  5930. 95    XCHG    AX,BP
  5931. 96    XCHG    AX,SI
  5932. 97    XCHG    AX,DI
  5933. 98    CBW
  5934. 66 98    CWDE        ;386+
  5935. 99    CWD
  5936. 66 99    CDQ        ;386+
  5937. 9A    CALL    FAR    seg:offs
  5938. 9B    WAIT
  5939. 9C    PUSHF
  5940. 66 9C    PUSHFD        ; 386+
  5941. 9D    POPF
  5942. 66 9D    POPFD        ; 386+
  5943. 9E    SAHF
  5944. 9F    LAHF
  5945.  
  5946. A0    MOV    AL,[imm]
  5947. A1    MOV    AX,[imm]
  5948. A2    MOV    [imm],AL
  5949. A3    MOV    [imm],ax
  5950. A4    MOVSB
  5951. A5    MOVS
  5952. A6    CMPSB
  5953. A7    CMPS
  5954. A8    TEST    AL,imm8
  5955. A9    TEST    AX,imm
  5956. AA    STOSB
  5957. AB    STOS
  5958. AC    LODSB
  5959. AD    LODS
  5960. AE    SCASB
  5961. AF    SCAS
  5962.  
  5963.  
  5964. B0    MOV    AL,imm8
  5965. B1    MOV    CL,imm8
  5966. B2    MOV    DL,imm8
  5967. B3    MOV    BL,imm8
  5968. B4    MOV    AH,imm8
  5969. B5    MOV    CH,imm8
  5970. B6    MOV    DH,imm8
  5971. B7    MOV    BH,imm8
  5972. B8    MOV    AX,imm
  5973. B9    MOV    CX,imm
  5974. BA    MOV    DX,imm
  5975. BB    MOV    BX,imm
  5976. BC    MOV    SP,imm
  5977. BD    MOV    BP,imm
  5978. BE    MOV    SI,imm
  5979. BF    MOV    DI,imm
  5980.  
  5981. C0    code extention [8]
  5982. C1    code extention [9]
  5983. C2    RET    NEAR    imm
  5984. C3    RET    NEAR
  5985. C4    LES    reg,mem
  5986. C5    LDS    reg,mem
  5987. C6    code extention [10]
  5988. C7    code extention [11]
  5989. C8    ENTER    imm,imm8    ;NECs & 186+
  5990. C9    LEAVE            ;NECs & 186+
  5991. CA    RET    FAR    imm
  5992. CB    RET    FAR
  5993. CC    INT    3
  5994. CD    INT    imm8
  5995. CE    INTO
  5996. CF    IRET
  5997.  
  5998. D0    code extention    [12]
  5999. D1    code extention    [13]
  6000. D2    code extention    [14]
  6001. D3    code extention    [15]
  6002. D4    AAM    imm8         ; Note: NECs w/o imm8 but D4 0A only
  6003. D5    AAD    imm8         ; Note: NECs w/o imm8 but D4 0A only
  6004. D6    SETALC             ;286+
  6005. D7    XLAT
  6006. D8-DF    ESC    imm6,mem     ; Note: Refer to future part
  6007.                  ; Cooprocessor commands.
  6008.  
  6009. E0    LOOPNZ    rel8
  6010. E1    LOOPZ    rel8
  6011. E2    LOOP    rel8
  6012. E3    JCXZ    rel8
  6013. 66 E3    JECXZ    rel8         ; 386+
  6014. E4    IN    AL,imm8
  6015. E5    IN    AX,imm8
  6016. E6    OUT    imm8,AL
  6017. E7    OUT    imm8,AX
  6018. E8    CALL    NEAR    rel16
  6019. E9    JMP    NEAR    rel16
  6020. EA    JMP    FAR    seg:offs
  6021. EB    JMP    SHORT    rel8
  6022. EC    IN    AL,DX
  6023. ED    IN    AX,DX
  6024. EE    OUT    DX,AL
  6025. EF    OUT    DX,AX
  6026.  
  6027. F0    LOCK    prefix
  6028. F1    SMI             ; AMD Am386/486DXLV
  6029. F2    REPNZ
  6030. F3    REP/REPZ
  6031. F4    HLT
  6032. F5    CMC
  6033. F6    code extention [16]
  6034. F7    code extention [17]
  6035. F8    CLC
  6036. F9    STC
  6037. FA    CLI
  6038. FB    STI
  6039. FC    CLD
  6040. FD    STD
  6041. FE    code extention [18]
  6042. FF    code extention [19]
  6043.  
  6044.  
  6045.  
  6046.  
  6047.  
  6048.  
  6049.  
  6050. [TABLE 01]:
  6051. Note: First Byte of Operation is 0Fh
  6052.  
  6053. 00    Extended Opcode 20                ; 286+
  6054. 01    Extended Opcode 21                ; 286+
  6055. 02    LAR    reg,mem                    ; 286+
  6056. 03    LSL    reg,mem                    ; 286+
  6057. 04    LOADALL         ; Alternative 286        ; 286 only
  6058. 05    LOADALL         ; 286                ; 286 only
  6059. 06    CLTS                        ; 286+
  6060. 07    LOADALL         ; i386,486            ; 386-486, Never Pentium
  6061.     RES3         ; AMD Am386zXLV
  6062.     RES4         ; AMD Am486DXLV
  6063.     ICERET         ; IBM 386SLC,486SLC,486SLC2
  6064. 08    INVD                        ; 486+
  6065. 09    WBINVD                        ; 486+
  6066. 0A    Reserved, INT 6
  6067. 0B    UD2        ; all, but documented on Pentium Pro only
  6068. 0C-0F    Reserved, INT 6
  6069. 10    UMOV    mem8,reg8 ; Really different op. space    ; 386-486,Never Pentium
  6070.               ; on AMD Amz86zXLV, never P6, Cx5x86+
  6071.     TEST1    mem8,CL      ; NEC V20+
  6072. 11    UMOV    mem,reg      ; see 0Fh,10h
  6073.     TEST1    mem,CL      ; NEC V20+
  6074. 12    UMOV    reg8,mem8 ; see 0Fh,10h
  6075.     CLEAR1    mem8,CL      ; NEC V20+
  6076. 13    UMOV    reg,mem      ; see 0Fh,10h
  6077.     CLEAR1    mem,CL      ; NEC V20+
  6078. 14    SET1    mem8,CL      ; NEC V20+
  6079. 15    SET1    mem,CL      ; NEC V20+
  6080. 16    NOT1    mem8,CL      ; NEC V20+
  6081. 17    NOT1    mem,CL      ; NEC V20+
  6082. 18    TEST1    mem8,imm8 ; NEC V20+
  6083. 19    TEST1    mem,imm8  ; NEC V20+
  6084. 1A    CLEAR1    mem8,imm8 ; NEC V20+
  6085. 1B    CLEAR1    mem,imm8  ; NEC V20+
  6086. 1C    SET1    mem8,imm8 ; NEC V20+
  6087. 1D    SET1    mem,imm8  ; NEC V20+
  6088. 1E    NOT1    mem8,imm8 ; NEC V20+
  6089. 1F    NOT1    mem,imm8  ; NEC V20+
  6090.  
  6091.  
  6092. 20    MOV    reg32,CRn ; 386+
  6093.     ADD4S          ; NEC V20+
  6094. 21    MOV    reg32,DRn ; 386+
  6095. 22    MOV    CRn,reg32 ; 386+
  6096.     SUB4S          ; NEC V20+
  6097. 23    MOV    DRn,reg32 ; 386+
  6098. 24    MOV    reg32,TRn ; 386-486 only (Pentium never have TRs)
  6099. 25
  6100. 26    MOV    TRn,reg32 ; 386-486 only
  6101.     CMPS4S          ; NEC V20+
  6102. 27    reserved opcode
  6103. 28    ROL4    mem8      ; NEC V20+
  6104. 29    reserved opcode
  6105. 2A    ROL4    mem8      ; NEC V20+
  6106. 2B-2F    reserved opcodes
  6107.  
  6108. 30    WRMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  6109. 31    RDTSC          ; Pentium
  6110.     INS    reg8,reg8 ; NEC V20+   ; Note: NECINS
  6111. 32    RDMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  6112. 33    EXT    reg8,reg8 ; NEC V20+
  6113.     RDMPC          ; P6
  6114.  
  6115. 40    CMOVO    reg,mem      ; P6
  6116. 41    CMOVNO    reg,mem      ; P6
  6117. 42    CMOVC    reg,mem      ; P6
  6118. 43    CMOVNC    reg,mem      ; P6
  6119. 44    CMOVZ    reg,mem      ; P6
  6120. 45    CMOVNZ    reg,mem      ; P6
  6121. 46    CMOVA    reg,mem      ; P6
  6122. 47    CMOVNA    reg,mem      ; P6
  6123. 48    CMOVS    reg,mem      ; P6
  6124. 49    CMOVNS    reg,mem      ; P6
  6125. 4A    CMOVP    reg,mem      ; P6
  6126. 4B    CMOVNP    reg,mem      ; P6
  6127. 4C    CMOVL    reg,mem      ; P6
  6128. 4D    CMOVNL    reg,mem      ; P6
  6129. 4E    CMOVNG    reg,mem      ; P6
  6130. 4F    CMOVG    reg,mem      ; P6
  6131.  
  6132.  
  6133. 60    PUNPCKLBW    mm,mm/m64    ; MMX
  6134. 61    PUNPCKLWD    mm,mm/m64    ; MMX
  6135. 62    PUNPCKLDQ    mm,mm/m64    ; MMX
  6136. 63    PACKSSWB    mm,mm/m64    ; MMX
  6137. 64    PCMPGTB        mm,mm/m64    ; MMX
  6138. 65    PCMPGTW        mm,mm/m64    ; MMX
  6139. 66    PCMPGTD        mm,mm/m64    ; MMX
  6140. 67    PACKUSWB    mm,mm/m64    ; MMX
  6141. 68    PUNPCKHBW    mm,mm/m64    ; MMX
  6142. 69    PUNPCKHWD    mm,mm/m64    ; MMX
  6143. 6A    PUNPCKHDQ    mm,mm/m64    ; MMX
  6144. 6B    PACKSSDW    mm,mm/m64    ; MMX
  6145. 6C
  6146. 6D
  6147. 6E    MOVD        mm,r/m32    ; MMX
  6148. 6F    MOVD        mm,mm/m64    ; MMX
  6149.  
  6150. 70
  6151. 71    code extention [24]        ; MMX
  6152. 72    code extention [25]        ; MMX
  6153. 73    code extention [26]        ; MMX
  6154. 74    PCMPEQB        mm,mm/m64    ; MMX
  6155. 75    PCMPEQW        mm,mm/m64    ; MMX
  6156. 76    PCMPEQD        mm,mm/m64    ; MMX
  6157. 77    EMMS                ; MMX
  6158. 78    SVDC    mem,sreg  ; Cyrix M5+
  6159. 79    RSDC    sreg,mem  ; Cyrix M5+
  6160. 7A    SVLDT    mem      ; Cyrix M5+
  6161. 7B    RSLDT    mem      ; Cyrix M5+
  6162. 7C    SVTS    mem      ; Cyrix M5+
  6163. 7D    RSTS    mem      ; Cyrix M5+
  6164. 7E    SMINT          ; Cyrix M6+
  6165. 7E    MOVD    r/m32,mm        ; MMX
  6166. 7F    MOVD    mm/m64,mm        ; MMX
  6167.  
  6168.  
  6169. 80    JO    rel16    ; 386+
  6170. 81    JNO    rel16    ; 386+
  6171. 82    JC    rel16    ; 386+
  6172. 83    JNC    rel16    ; 386+
  6173. 84    JZ    rel16    ; 386+
  6174. 85    JNZ    rel16    ; 386+
  6175. 86    JNA    rel16    ; 386+
  6176. 87    JA    rel16    ; 386+
  6177. 88    JS    rel16    ; 386+
  6178. 89    JNS    rel16    ; 386+
  6179. 8A    JP    rel16    ; 386+
  6180. 8B    JNP    rel16    ; 386+
  6181. 8C    JL    rel16    ; 386+
  6182. 8D    JNL    rel16    ; 386+
  6183. 8E    JNG    rel16    ; 386+
  6184. 8F    JG    rel16    ; 386+
  6185.  
  6186. 90    SETO    mem8    ; 386+
  6187. 91    SETNO    mem8    ; 386+
  6188. 92    SETC    mem8    ; 386+
  6189. 93    SETNC    mem8    ; 386+
  6190. 94    SETZ    mem8    ; 386+
  6191. 95    SETNZ    mem8    ; 386+
  6192. 96    SETNA    mem8    ; 386+
  6193. 97    SETA    mem8    ; 386+
  6194. 98    SETS    mem8    ; 386+
  6195. 99    SETNS    mem8    ; 386+
  6196. 9A    SETP    mem8    ; 386+
  6197. 9B    SETNP    mem8    ; 386+
  6198. 9C    SETL    mem8    ; 386+
  6199. 9D    SETNL    mem8    ; 386+
  6200. 9E    SETNG    mem8    ; 386+
  6201. 9F    SETG    mem8    ; 386+
  6202.  
  6203. A0    PUSH    FS    ; 386+
  6204. A1    POP    FS    ; 386+
  6205. A2    CPUID        ; 486 SL enhanced,Pentium,UMC,i386CX,P6,M1,K5
  6206. A3    BT    mem,reg ; 386+
  6207. A4    SHLD    mem,reg,imm    ;386+
  6208. A5    SHLD    mem,reg,CL    ;386+
  6209. A6    XBTS    reg,mem,AX,CL    ; Intel (!!!) 80386 steps A0-B0
  6210.     CMPXCHG mem8,reg8    ; Intel (!!!) 80486 steps A0-B0
  6211. A7    IBTS    mem,AX,CL,reg    ; Intel (!!!) 80386 steps A0-B0
  6212.     CMPXCHG mem,reg        ; Intel (!!!) 80486 steps A0-B0
  6213. A8    PUSH    GS    ; 386+
  6214. A9    POP    GS    ; 386+
  6215. AA    RSM        ; i486 SL Enhanced, i386CX, Pentium etc
  6216. AB    BTS    mem,reg ; 386+
  6217. AC    SHRD    mem,reg,imm    ;386+
  6218. AD    SHRD    mem,reg,CL    ;386+
  6219. AE
  6220. AF    IMUL    reg,mem ; 386+
  6221.  
  6222. B0    CMPXCHG mem8,reg8    ; 486+ (Intel B1+ step only)
  6223. B0    CMPXCHG mem,reg        ; 486+ (Intel B1+ step only)
  6224. B2    LSS    reg,mem        ; 386+
  6225. B3    BTR    mem,reg        ; 386+
  6226. B4    LFS    reg,mem        ; 386+
  6227. B5    LGS    reg,mem        ; 386+
  6228. B6    MOVZX    reg,mem8    ; 386+
  6229. B7    MOVZX    reg32,mem    ; 386+
  6230. B8
  6231. B9
  6232. BA    code extention [22]
  6233. BB    BTC    mem,reg        ; 386+
  6234. BC    BSF    reg,mem        ; 386+
  6235. BD    BSR    reg,mem        ; 386+
  6236. BE    MOVSX    reg,mem8    ; 386+
  6237. BF    MOVSX    reg32,mem    ; 386+
  6238.  
  6239. C0    XADD    mem8,reg8    ; 486+
  6240. C1    XADD    mem,reg        ; 486+
  6241. C2-C6    reserved opcodes
  6242. C7    code extention [23]
  6243. C8    BSWAP    EAX        ; 486+
  6244. C9    BSWAP    ECX        ; 486+
  6245. CA    BSWAP    EDX        ; 486+
  6246. CB    BSWAP    EBX        ; 486+
  6247. CC    BSWAP    ESP        ; 486+
  6248. CD    BSWAP    EBP        ; 486+
  6249. CE    BSWAP    ESI        ; 486+
  6250. CF    BSWAP    EDI        ; 486+
  6251.  
  6252. D1    PSRLW    mm,mm/m64    ; MMX
  6253. D2    PSRLD    mm,mm/m64    ; MMX
  6254. D3    PSRLQ    mm,mm/m64    ; MMX
  6255. D4
  6256. D5    PMULLW    mm,mm/m64    ; MMX
  6257.  
  6258. ......
  6259. E1    PSRAW    mm,mm/m64    ; MMX
  6260. E2    PSRAD    mm,mm/m64    ; MMX
  6261. E5    PMULHW    mm,mm/m64    ; MMX
  6262. .....
  6263.  
  6264.  
  6265. F1    PSLLW      mm,mm/m64    ; MMX
  6266. F2    PSLLD      mm,mm/m64    ; MMX
  6267. F3    PSLLQ      mm,mm/m64    ; MMX
  6268. F5    PMULADDWD mm,mm/m64    ; MMX
  6269. .....
  6270.  
  6271. D0-FF    reserved opcodes
  6272. FF    BRKEM    imm8        ; NEC V20+
  6273.  
  6274.  
  6275. **************************************************
  6276. CODE EXTENTIONS:
  6277.  
  6278. First byte(s) look at TABLES#00,01
  6279. Next byte have format
  6280.      MMOOOMMM  :  MM is memory mode (see postbyte)
  6281.           OOO select operation in this extention code field
  6282.           MMM is memory field (see Postbyte)
  6283.  
  6284.  
  6285.  
  6286. Code Extention # 1
  6287. (First byte(s) = 80h)
  6288. Field
  6289. OOO    Operation
  6290. 000    ADD    mem8,imm8
  6291. 001    OR    mem8,imm8
  6292. 010    ADC    mem8,imm8
  6293. 011    SBB    mem8,imm8
  6294. 100    AND    mem8,imm8
  6295. 101    SUB    mem8,imm8
  6296. 110    XOR    mem8,imm8
  6297. 111    CMP    mem8,imm8
  6298.  
  6299.  
  6300.  
  6301. Code Extention # 2
  6302. (First byte(s) = 81h)
  6303. Field
  6304. OOO    Operation
  6305. 000    ADD    mem,imm
  6306. 001    OR    mem,imm
  6307. 010    ADC    mem,imm
  6308. 011    SBB    mem,imm
  6309. 100    AND    mem,imm
  6310. 101    SUB    mem,imm
  6311. 110    XOR    mem,imm
  6312. 111    CMP    mem,imm
  6313.  
  6314. Code Extention # 3
  6315. (First byte(s) = 82h)
  6316. Note: i486 Reserved opcode, Never INT6 but do nothing
  6317. Field
  6318. OOO    Operation
  6319. 000    ADD    mem8,simm8
  6320. 001
  6321. 010    ADC    mem8,simm8
  6322. 011    SBB    mem8,simm8
  6323. 100
  6324. 101    SUB    mem8,simm8
  6325. 110
  6326. 111    CMP    mem8,simm8
  6327.  
  6328.  
  6329. Code Extention # 4
  6330. (First byte(s) = 83h)
  6331. Field
  6332. OOO    Operation
  6333. 000    ADD    mem,simm8
  6334. 001
  6335. 010    ADC    mem,simm8
  6336. 011    SBB    mem,simm8
  6337. 100
  6338. 101    SUB    mem,simm8
  6339. 110
  6340. 111    CMP    mem,simm8
  6341.  
  6342.  
  6343. Code Extention # 5
  6344. (First byte(s) = 8Ch)
  6345. Field
  6346. OOO    Operation
  6347. 000    MOV    mem,ES
  6348. 001    MOV    mem,CS
  6349. 010    MOV    mem,SS
  6350. 011    MOV    mem,DS
  6351. 100    MOV    mem,FS    ; 386+
  6352. 101    MOV    mem,GS    ; 386+
  6353. 110
  6354. 111
  6355.  
  6356.  
  6357. Code Extention # 6
  6358. (First byte(s) = 8Eh)
  6359. Field
  6360. OOO    Operation
  6361. 000    MOV    ES,mem
  6362. 001    MOV    CS,mem    ; Non CMOS version of 8086/8088 only
  6363. 010    MOV    SS,mem
  6364. 011    MOV    DS,mem
  6365. 100    MOV    FS,mem    ; 386+
  6366. 101    MOV    GS,mem    ; 386+
  6367. 110
  6368. 111
  6369.  
  6370. Code Extention # 7
  6371. (First byte(s) = 8Fh)
  6372. Note: i486 can eat any OOO.
  6373. Field
  6374. OOO    Operation
  6375. 000    POP    mem
  6376. 001
  6377. 010
  6378. 011
  6379. 100
  6380. 101
  6381. 110
  6382. 111
  6383.  
  6384. Code Extention # 8
  6385. (First byte(s) = C0h)
  6386. Field
  6387. OOO    Operation
  6388. 000    ROL    mem8,imm8 ; 186+
  6389. 001    ROR    mem8,imm8 ; 186+
  6390. 010    RCL    mem8,imm8 ; 186+
  6391. 011    RCR    mem8,imm8 ; 186+
  6392. 100    SHL    mem8,imm8 ; 186+
  6393. 101    SHR    mem8,imm8 ; 186+
  6394. 110    SAL    mem8,imm8 ; 186+
  6395. 111    SAR    mem8,imm8 ; 186+
  6396.  
  6397. Code Extention # 9
  6398. (First byte(s) = C1h)
  6399. Field
  6400. OOO    Operation
  6401. 000    ROL    mem,imm8 ; 186+
  6402. 001    ROR    mem,imm8 ; 186+
  6403. 010    RCL    mem,imm8 ; 186+
  6404. 011    RCR    mem,imm8 ; 186+
  6405. 100    SHL    mem,imm8 ; 186+
  6406. 101    SHR    mem,imm8 ; 186+
  6407. 110    SAL    mem,imm8 ; 186+
  6408. 111    SAR    mem,imm8 ; 186+
  6409.  
  6410. Code Extention # 10
  6411. (First byte(s) = C6h)
  6412. Note: i486 can eat any OOO field.
  6413. Field
  6414. OOO    Operation
  6415. 000    MOV    mem8,imm8
  6416. 001
  6417. 010
  6418. 011
  6419. 100
  6420. 101
  6421. 110
  6422. 111
  6423.  
  6424. Code Extention # 11
  6425. (First byte(s) = C7h)
  6426. Note: i486 can eat any OOO field
  6427. Field
  6428. OOO    Operation
  6429. 000    MOV    mem,imm16
  6430. 001
  6431. 010
  6432. 011
  6433. 100
  6434. 101
  6435. 110
  6436. 111
  6437.  
  6438.  
  6439.  
  6440. Code Extention # 12
  6441. (First byte(s) = D0h)
  6442. Field
  6443. OOO    Operation
  6444. 000    ROL    mem8,1
  6445. 001    ROR    mem8,1
  6446. 010    RCL    mem8,1
  6447. 011    RCR    mem8,1
  6448. 100    SHL    mem8,1
  6449. 101    SHR    mem8,1
  6450. 110    SAL    mem8,1
  6451. 111    SAR    mem8,1
  6452.  
  6453.  
  6454. Code Extention # 13
  6455. (First byte(s) = D1h)
  6456. Field
  6457. OOO    Operation
  6458. 000    ROL    mem,1
  6459. 001    ROR    mem,1
  6460. 010    RCL    mem,1
  6461. 011    RCR    mem,1
  6462. 100    SHL    mem,1
  6463. 101    SHR    mem,1
  6464. 110    SAL    mem,1
  6465. 111    SAR    mem,1
  6466.  
  6467.  
  6468. Code Extention # 14
  6469. (First byte(s) = D2h)
  6470. Field
  6471. OOO    Operation
  6472. 000    ROL    mem8,CL
  6473. 001    ROR    mem8,CL
  6474. 010    RCL    mem8,CL
  6475. 011    RCR    mem8,CL
  6476. 100    SHL    mem8,CL
  6477. 101    SHR    mem8,CL
  6478. 110    SAL    mem8,CL
  6479. 111    SAR    mem8,CL
  6480.  
  6481.  
  6482.  
  6483. Code Extention # 15
  6484. (First byte(s) = D3h)
  6485. Field
  6486. OOO    Operation
  6487. 000    ROL    mem,CL
  6488. 001    ROR    mem,CL
  6489. 010    RCL    mem,CL
  6490. 011    RCR    mem,CL
  6491. 100    SHL    mem,CL
  6492. 101    SHR    mem,CL
  6493. 110    SAL    mem,CL
  6494. 111    SAR    mem,CL
  6495.  
  6496. Code Extention # 16
  6497. (First byte(s) = F6h)
  6498. Field
  6499. OOO    Operation
  6500. 000    TEST    mem8,imm8
  6501. 001
  6502. 010    NOT    mem8
  6503. 011    NEG    mem8
  6504. 100    MUL    mem8
  6505. 101    IMUL    mem8
  6506. 110    DIV    mem8
  6507. 111    IDIV    mem8
  6508.  
  6509. Code Extention # 17
  6510. (First byte(s) = F7h)
  6511. Field
  6512. OOO    Operation
  6513. 000    TEST    mem,imm16
  6514. 001
  6515. 010    NOT    mem
  6516. 011    NEG    mem
  6517. 100    MUL    mem
  6518. 101    IMUL    mem
  6519. 110    DIV    mem
  6520. 111    IDIV    mem
  6521.  
  6522.  
  6523. Code Extention # 18
  6524. (First byte(s) = FEh)
  6525. Field
  6526. OOO    Operation
  6527. 000    INC    mem8
  6528. 001    DEC    mem8
  6529. 010
  6530. 011
  6531. 100
  6532. 101
  6533. 110
  6534. 111
  6535.  
  6536. Code Extention # 19
  6537. (First byte(s) = FFh)
  6538. Field
  6539. OOO    Operation
  6540. 000    INC    mem
  6541. 001    DEC    mem
  6542. 010    CALL    NEAR    mem
  6543. 011    CALL    FAR    mem
  6544. 100    JMP    NEAR    mem
  6545. 101    JMP    FAR    mem
  6546. 110    PUSH    mem
  6547. 111
  6548.  
  6549. Code Extention # 20
  6550. (First byte(s) = 0FH,00H)
  6551. Field
  6552. OOO    Operation
  6553. 000    SLDT    mem    ; 286+
  6554. 001    STR    mem    ; 286+
  6555. 010    LLDT    mem    ; 286+
  6556. 011    LTR    mem    ; 286+
  6557. 100    VERR    mem    ; 286+
  6558. 101    VERW    mem    ; 286+
  6559. 110
  6560. 111
  6561.  
  6562. Code Extention # 21
  6563. (First byte(s) = 0Fh,01h)
  6564. Field
  6565. OOO    Operation
  6566. 000    SGDT    mem    ; 286+
  6567. 001    SIDT    mem    ; 286+
  6568. 010    LGDT    mem    ; 286+
  6569. 011    LIDT    mem    ; 286+
  6570. 100    SMSW    mem    ; 286+
  6571. 101
  6572. 110    LMSW    mem    ; 286+
  6573. 111    INVLPG    mem    ; 486+
  6574.  
  6575.  
  6576. Code Extention # 22
  6577. (First byte(s) = 0Fh,BAh)
  6578. Field
  6579. OOO    Operation
  6580. 000
  6581. 001
  6582. 010
  6583. 011
  6584. 100    BT    mem,imm8 ; 386+
  6585. 101    BTS    mem,imm8 ; 386+
  6586. 110    BTR    mem,imm8 ; 386+
  6587. 111    BTC    mem,imm8 ; 386+
  6588.  
  6589. Code Extention # 23
  6590. (First byte(s) = 0Fh,C7h)
  6591. Field
  6592. OOO    Operation
  6593. 000
  6594. 001    CMPXCHG8B  mem    ; Pentium
  6595. 010
  6596. 011
  6597. 100
  6598. 101
  6599. 110
  6600. 111
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606. ------------------------------------------------
  6607. APPENDIX  F1  FLOATING POINT OPCODES
  6608.  
  6609.  
  6610.  
  6611. ESC 0  (First byte = D8h)
  6612.     ==========================
  6613.     ESCAPE 000    MMRRRMMM
  6614.     ==========================
  6615.         Operation
  6616. RRR    If MM<>11    If MM=11
  6617. 000    FADD  mem32r    FADD    ST,ST(i)
  6618. 001    FMUL  mem32r    FMUL    ST,ST(i)
  6619. 010    FCOM  mem32r    FCOM    ST(i)
  6620. 011    FCOMP mem32r    FCOMP    ST(i)
  6621. 100    FSUB  mem32r    FSUB    ST,ST(i)
  6622. 101    FSUBR mem32r    FSUBR    ST,ST(i)
  6623. 110    FDIV  mem32r    FDIV    ST,ST(i)
  6624. 111    FDIVR mem32r    FDIVR    ST,ST(i)
  6625.  
  6626.  
  6627.  
  6628.  
  6629. ESC 1  (First byte = D9h)
  6630.     ==========================
  6631.     ESCAPE 001    MMRRRMMM
  6632.     ==========================
  6633.         Operation
  6634. RRR    If MM<>11    If MM=11
  6635. 000    FLD    mem32r    FLD    ST(i)
  6636. 001    empty        FXCH    ST(i)
  6637. 010    FST    mem32r    See Table marked ESC1-Extended codes
  6638. 011    FSTP   mem32r    FSTP    ST(i)
  6639. 100    FLDENV mem    See Table marked ESC1-Extended codes
  6640. 101    FLDCW  mem    See Table marked ESC1-Extended codes
  6641. 110    FSTENV mem    See Table marked ESC1-Extended codes
  6642. 111    FSTCW  mem    See Table marked ESC1-Extended codes
  6643.  
  6644.  
  6645. ESC1-Extended codes:
  6646.    \ RRR
  6647. MMM \    010    100    101    110    111
  6648. 000    FNOP    FCHS    FLD1    F2XM1    FPREM
  6649. 001        FABS    FLDL2T    FYL2X    FYL2XP1
  6650. 010            FLDL2E    FPTAN    FSQRT
  6651. 011            FLDPI    FPATAN    FSINCOS'
  6652. 100        FTST    FLDLG2    FXTRACT FRNDINT
  6653. 101        FXAM    FLDLN2    FPREM1    FSCALE
  6654. 110            FLDZ    FDECSTP FSIN'
  6655. 111                FINCSTP FCOS'
  6656.  
  6657.  
  6658. ' means 387+  (include 287XL/XLT, 187!!!)
  6659.  
  6660.  
  6661.  
  6662. ESC 2  (First byte = DAh)
  6663.     ==========================
  6664.     ESCAPE 010    MMRRRMMM
  6665.     ==========================
  6666.         Operation
  6667. RRR    If MM<>11
  6668. 000    FIADD  mem32i
  6669. 001    FIMUL  mem32i
  6670. 010    FICOM  mem32i
  6671. 011    FICOMP mem32i
  6672. 100    FISUB  mem32i
  6673. 101    FISUBR mem32i
  6674. 110    FIDIV  mem32i
  6675. 111    FIDIVR mem32i
  6676.  
  6677. Note: P6
  6678. DA C0+i     FCMOVB     ST0,STi
  6679. DA C8+i     FCMOVE     ST0,STi
  6680. DA D0+i     FCMOVBE ST0,STi
  6681. DA D8+i     FCMOVU     ST0,STi
  6682.  
  6683.  
  6684. ESC 3  (First byte = DBh)
  6685.     ==========================
  6686.     ESCAPE 011    MMRRRMMM
  6687.     ==========================
  6688.         Operation
  6689. RRR    If MM<>11
  6690. 000    FILD   mem32i
  6691. 001
  6692. 010    FIST   mem32i
  6693. 011    FISTP  mem32i
  6694. 100
  6695. 101    FLD    mem80r
  6696. 110
  6697. 111    FSTP   mem80r
  6698.  
  6699. So,If MM=11 we have next command (first byte = DBh)
  6700. Mnemonic    Second byte of code
  6701. FNENI        E0H    (8087 only, others do nothing)
  6702. FNDISI        E1H    (8087 only, others do nothing)
  6703. FNCLEX        E2H
  6704. FNINIT        E3H
  6705. FSETPM        E4H    (287s only)
  6706. FRSTPM        E5H    (287XL/XLT only)
  6707. FSTB0        E8H    (IIT)
  6708. FSTB2        EAH    (IIT)
  6709. FSTB1        EBH    (IIT)
  6710. F4X4        F1H    (IIT)
  6711. FRINT2        FCH    (Cyrix)
  6712. FUCOMI     ST0,STi E8H+i     (P6)
  6713. FCMOVNB     ST0,STi C0H+i     (P6)
  6714. FCMOVNE     ST0,STi C8H+i     (P6)
  6715. FCMOVNBE ST0,STi D0H+i     (P6)
  6716. FCMOVNU     ST0,STi D8H+i     (P6)
  6717. FCOMPI     ST0,STi F0H+i     (P6)
  6718.  
  6719. ESC 4  (First byte = DCh)
  6720.     ==========================
  6721.     ESCAPE 100    MMRRRMMM
  6722.     ==========================
  6723.         Operation
  6724. RRR    If MM<>11    If MM=11
  6725. 000    FADD  mem64r    FADD    ST,ST(i)
  6726. 001    FMUL  mem64r    FMUL    ST,ST(i)
  6727. 010    FCOM  mem64r    FCOM    ST(i)
  6728. 011    FCOMP mem64r    FCOMP    ST(i)
  6729. 100    FSUB  mem64r    FSUB    ST,ST(i)
  6730. 101    FSUBR mem64r    FSUBR    ST,ST(i)
  6731. 110    FDIV  mem64r    FDIV    ST,ST(i)
  6732. 111    FDIVR mem64r    FDIVR    ST,ST(i)
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738. ESC 5  (First byte = DDh)
  6739.     ==========================
  6740.     ESCAPE 101    MMRRRMMM
  6741.     ==========================
  6742.         Operation
  6743. RRR    If MM<>11    If MM=11
  6744. 000    FLD    mem64r    FFREE  ST(i)
  6745. 001            FXCH   ST(i)
  6746. 010    FST    mem64r    FST    ST(i)
  6747. 011    FSTP   mem64r    FSTP   ST(i)
  6748. 100    FNRSTOR mem
  6749. 101
  6750. 110    FNSAVE    mem    FUCOM  ST(i)
  6751. 111    FSTSW    mem    FUCOMP ST(i)
  6752.  
  6753.  
  6754. Note: FRICHOP have opcode (DDh FCh) (Cyrix)
  6755.  
  6756.  
  6757.  
  6758.  
  6759.  
  6760. ESC 6  (First byte = DEh)
  6761.     ==========================
  6762.     ESCAPE 110    MMRRRMMM
  6763.     ==========================
  6764.         Operation
  6765. RRR    If MM<>11    If MM=11
  6766. 000    FIADD  mem16i    FADDP    ST(i),ST
  6767. 001    FIMUL  mem16i    FMULP    ST(i),ST
  6768. 010    FICOM  mem16i    FCOMP    ST(i),ST
  6769. 011    FICOMP mem16i
  6770. 100    FISUB  mem16i    FSUBP    ST(i),ST
  6771. 101    FISUBR mem16i    FSUBRP    ST(i),ST
  6772. 110    FIDIV  mem16i    FDIVP    ST(i),ST
  6773. 111    FIDIVR mem16i    FDIVRP    ST(i),ST
  6774.  
  6775.  
  6776. Note: FCOMPP have opcode (DEh D9h) (Intel and all)
  6777.  
  6778.  
  6779. ESC 7  (First byte = DFh)
  6780.     ==========================
  6781.     ESCAPE 111    MMRRRMMM
  6782.     ==========================
  6783.         Operation
  6784. RRR    If MM<>11    If MM=11
  6785. 000    FILD   mem16i    FFREE  ST(i)
  6786. 001            FXCH   ST(i)
  6787. 010    FIST   mem16i    FST    ST(i)
  6788. 011    FISTP  mem16i    FSTP   ST(i)
  6789. 100    FBLD   mem80b
  6790. 101    FILD   mem64i
  6791. 110    FBSTP  mem80b
  6792. 111    FISTP  mem64i
  6793.  
  6794. Note: Next Instruction have opcodes:
  6795. Mnemonic    Opcode
  6796. FNSTSW    AX    DFh E0h      (287+)
  6797. FNSTDW    AX    DFh E1h      (387SL Mobile)
  6798. FSTSG    AX    DFh E2h      (387SL Mobile)
  6799. FRINEAR        DFh FCh      (Cyrix)
  6800. FUCOMIP ST0,STi DFH E8H+i (P6)
  6801. FCOMIP    ST0,STi DFH F0H+i (P6)
  6802.  
  6803.  
  6804.  
  6805.  
  6806. ------------------------------------------
  6807. APPENDIX G
  6808.  
  6809. BUGS & CPU IDENTIFICATION INFO
  6810.  
  6811. 1) How to separate i386SX and i386DX
  6812.    (Cx486SLC and Cx486DLC)
  6813.    Note:  With 386DX type CPU possible to used
  6814.       287 class NPX, and bit 4 in CR0
  6815.       ET - Extention Type on DX we may to
  6816.       clear to 0, but for SX and REAL 486
  6817.       this bit always 1.
  6818.    Routine:
  6819.     mov    eax,cr0
  6820.     push    eax
  6821.     and    al,0efh
  6822.     mov    cr0,eax
  6823.     mov    eax,cr0
  6824.     test    al,10h
  6825.     pop    eax
  6826.     mov    cr0,eax
  6827.     jne    SX/SLC
  6828.     jmp    DX/DLC
  6829.  
  6830.  
  6831.  
  6832. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  6833.     Routine:
  6834. memory_location DW    ?
  6835.     mov    memory_location,0
  6836.     fninit
  6837.     fstcw    memory_location
  6838.     cmp    memory_location,037Fh
  6839.     jz    i486SX
  6840.     jmp    i486DX/DX2etc/i487SX
  6841.  
  6842.  
  6843. 3) How to separate Cyrix's CPUs and other
  6844.        Be sure that Your CPU no Pentium before
  6845.        UMOV executed on Intel and other in
  6846.        Non SM modes as MOV.
  6847.        But Cyrix executed this instruction as
  6848.        Double NOP, and never generate INT 6.
  6849.        So.
  6850. Mem_Loc DW  1
  6851.     xor    ax,ax
  6852.     umov    ax,Mem_Loc
  6853.     or    ax,ax
  6854.     jz    Cyrix
  6855.     jmp    No_Cyrix
  6856.  
  6857.  
  6858. 4) Standart Way: Part 1
  6859.    (Intel recomended this way)
  6860.  
  6861.     pushf
  6862.     pop    ax
  6863.     and    ax,0fffh    ; Clear bits 15..12
  6864.     push    ax
  6865.     popf
  6866.     and    ax,0f000h    ; Is bits 15..12=0 ?
  6867.     jz    286_CPU
  6868.     and    ax,8000h    ; Is bit 15=0
  6869.     jz    386_and_Higher
  6870.     jmp    86_88and186_186etc
  6871.  
  6872.  
  6873. 5) How separate 86/88, 186/188 and NECs
  6874.  
  6875.     mov    ax,1
  6876.     mov    cl,33
  6877.     shl    ax,cl
  6878.     jnz    186_188
  6879.     pusha        ; Executed on 8086/8088 as JMP $+2
  6880.     stc
  6881.     jc    NECs
  6882.     jmp    86_88
  6883.  
  6884.  
  6885. 6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
  6886.    CMOS 80C86/88 ignore it.
  6887.  
  6888. 7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
  6889.                NEC/Sony V20/V30 don't.
  6890.  
  6891. 8) Remember POP CS on 8086/8088.
  6892.  
  6893. 9) PUSH SP
  6894.    286 placed in stack new value of SP
  6895.    86/88 old.
  6896.  
  6897. 10) Best way to Reset 286+ in Real Mode:
  6898.     xor      sp,sp
  6899.     push  smth
  6900.  
  6901. 11) Maximal Length of Instructian
  6902.     86: N/R
  6903.     286:  10 byte
  6904.     386+: 15 byte
  6905.  
  6906. ------------------------------------------------
  6907. APPENDIX H
  6908. Internal Names Of Processors
  6909.  
  6910. (Intel)
  6911. P9    i386SX
  6912. P4    i486DX
  6913. P4S    i486SX
  6914. P23S    i487SX
  6915. P23T    OverDrive for PGA(169)
  6916. P4T    OverDrive for PGA(168)
  6917. P24S    i486DX2
  6918. P24T    Pentium OverDrive for  i486DX2 socket 3 (Vcc=5V,core=3V).
  6919. P24CT    Pentium OverDrive for Socket 3 (Vcc=3V)
  6920. P5    Pentium-60,66
  6921. P5T    Overdrive for P5 socket
  6922. P54C    Pentium-90,100,75 x1.5 usually with APIC and Multiprocessing features
  6923. P54CS    Pentium-120,133      x2   with reduced APIC and multipr. features
  6924. P55C    Bugfix P54C with clock 150,166, 180  (CLK x3) 2.5V
  6925. P54LM    Pentium P54C with 2.9V (for Notebooks)
  6926. P24C    IntelDX4
  6927. P24D    i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  6928. P54M    Overdrive ( include to P54C but P54C work too)
  6929. P6    Pentium Pro  (no comments)
  6930. P6T    Pentium Pro OverDrive (for extended Pentium Sockets)
  6931. P7    ??????    (no comments)
  6932. P54CSQ    2x Pentiums P120 etc.
  6933.  
  6934. (Cyrix)
  6935. M5    Cx486S/S2
  6936. M6    Cx486D/D2
  6937. C6    Cx487D
  6938. M7    Cx486DX/Cx486DX2
  6939. M8    Cx486DX4
  6940. M1    Cx6x86
  6941. M1 SC    Cx5x86
  6942. M1r    Feature M1 with reduced due size.
  6943.  
  6944.  
  6945. (AMD)
  6946. K5    All listed about it
  6947. K6    NexGen Nx6x86
  6948.  
  6949.  
  6950. -------------------------------------------------
  6951. APPENDIX  I       FORMAT  OF DR6  REGISTER
  6952.  
  6953.     Am386xx                Am486SXLV
  6954. CPU i386xx       TI486SXL        Am386DXLV  TI486SLC/e
  6955.     i486xx  P5    M7 Cx486SLC IBM486SLC2    Am386SXLV  TI486SXLC   Am486xx
  6956. Bits
  6957. 0    B0        B0    B0   B0        B0    B0        B0    B0
  6958. 1    B1        B1    B1   B1        B1    B1        B1    B1
  6959. 2    B2        B2    B2   B2        B2    B2        B2    B2
  6960. 3    B3        B3    B3   B3        B3    B3        B3    B3
  6961. 4    0        1    1    1        0    0        1    0
  6962. 5    0        1    1    1        0    0        1    0
  6963. 6    0        1    1    1        0    0        1    0
  6964. 7    0        1    1    1        0    0        1    0
  6965. 8    0        1    1    1        0    0        1    0
  6966. 9    0        1    1    1        0    0        1    0
  6967. 10   0        1    1    1        0    0        1    0
  6968. 11   0        1    1    1        0    0        1    0
  6969. 12   0        1    0    0        BK    SMMS        0    0
  6970. 13   BD        BD    0    1        BD    BD        0    BD
  6971. 14   BS        BS    BS   BS        BS    BS        BS    BS
  6972. 15   BT        BT    BT   BT        BT    BT        BT    BT
  6973. 16   0        1    0    0        0    0        0    0
  6974. 17   0        1    0    0        0    0        0    0
  6975. 18   0        1    0    0        0    0        0    0
  6976. 19   0        1    0    0        0    0        0    0
  6977. 20   0        1    0    0        0    0        0    0
  6978. 21   0        1    0    0        0    0        0    0
  6979. 22   0        1    0    0        0    0        0    0
  6980. 23   0        1    0    0        0    0        0    0
  6981. 24   0        1    0    0        0    0        0    0
  6982. 25   0        1    0    0        0    0        0    0
  6983. 26   0        1    0    0        0    0        0    0
  6984. 27   0        1    0    0        0    0        0    0
  6985. 28   0        1    0    0        0    0        0    0
  6986. 29   0        1    0    0        0    0        0    0
  6987. 30   0        1    0    0        0    0        0    0
  6988. 31   0        1    0    0        0    0        0    0
  6989.  
  6990.  
  6991.  
  6992. -------------------------------------------------
  6993. APPENDIX  J        FORMAT  OF DR7  REGISTER
  6994.  
  6995.     Am386xx                Am486SXLV
  6996. CPU i386xx       TI486SXL        Am386DXLV  TI486SLC/e
  6997.     i486xx  P5    M7 Cx486SLC IBM486SLC2    Am386SXLV  TI486SXLC  Am486XX
  6998. Bits
  6999. 0    L0        L0    L0   L0        L0    L0        L0        L0
  7000. 1    G0        G0    G0   G0        G0    G0        G0        G0
  7001. 2    L1        L1    L1   L1        L1    L1        L1        L1
  7002. 3    G1        G1    G1   G1        G1    G1        G1        G1
  7003. 4    L2        L2    L2   L2        L2    L2        L2        L2
  7004. 5    G2        G2    G2   G2        G2    G2        G2        G2
  7005. 6    L3        L3    L3   L3        L3    L3        L3        L3
  7006. 7    G3        G3    G3   G3        G3    G3        G3        G3
  7007. 8    LE        LE    LE   LE        LE    LE        LE        LE
  7008. 9    GE        GE    GE   GE        GE    GE        GE        GE
  7009. 10   0        1    1    0        0    0        1        0
  7010. 11   0        0    0    0        GM    0        0        0
  7011. 12   0        0    0    0        TP    SMIE        0        0
  7012. 13   GD        GD    GD   GD        GD    0        GD        0
  7013. 14   0        0    0    0        TB    0        0        0
  7014. 15   0        0    0    0        TT    0        0        0
  7015. 16   R/W0   ----------------------------------------------------------->
  7016. 17   R/W0   ----------------------------------------------------------->
  7017. 18   LEN0
  7018. 19   LEN0        same as column 1
  7019. 20   R/W1
  7020. 21   R/W1
  7021. 22   LEN1
  7022. 23   LEN1
  7023. 24   R/W2
  7024. 25   R/W2         .....
  7025. 26   LEN2
  7026. 27   LEN2
  7027. 28   R/W3
  7028. 29   R/W3
  7029. 30   LEN3   ------------------------------------------------------------>
  7030. 31   LEN3   ------------------------------------------------------------>
  7031.  
  7032.  
  7033. -------------------------------------------------
  7034. APPENDIX  K         FORMAT  OF TR4  REGISTER
  7035.  
  7036.                 WB-Enh.         WB-Enh.        AMD Enhanced
  7037.                 IntelDX2   IntelDX4     IntelDX4        CPU when
  7038. CPU i486xx  M7    TI486SXC/e  (WB mode)  (WT mode) (WB mode) TI486SXL EXT=0  EXT=1
  7039. Bits
  7040. 0   ---       ---       0          VL    ---      VL        0          --   --
  7041. 1   ---       ---       0          VH    ---      VH        0          --   --
  7042. 2   ---       ---       0          ---    ---      ---       VALID_BLK  --   --
  7043. 3  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  7044. 4  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  7045. 5  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  7046. 6  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  7047. 7   LRU      LRU      LRU          LRU    LRU      LRU       LRU         LRU   LRU
  7048. 8   LRU      LRU      ---          LRU    LRU      LRU       ---         LRU   LRU
  7049. 9   LRU      LRU      TAG          LRU    LRU      LRU       ---         LRU   LRU
  7050. 10   V       V      TAG          ---     V      ---       ---          V       V
  7051. 11  TAG      TAG      TAG          TAG    ---      ---       ---          0       --
  7052. 12  TAG      TAG      TAG          TAG    TAG      TAG       ---         TAG   --
  7053. 13  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7054. 14  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7055. 15  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7056. 16  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7057. 17  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7058. 18  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7059. 19  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7060. 20  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST0
  7061. 21  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST0
  7062. 22  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST1
  7063. 23  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST1
  7064. 24  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST2
  7065. 25  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST2
  7066. 26  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST3
  7067. 27  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST3
  7068. 28  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7069. 29  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   STn
  7070. 30  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   STn
  7071. 31  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  7072.  
  7073.  
  7074. -------------------------------------------------
  7075. APPENDIX  L        FORMAT  OF TR5  REGISTER
  7076.  
  7077.                 WB-Enh.         WB-Enh.        AMD Enhanced
  7078.     Am486xx            IntelDX2   IntelDX4     IntelDX4        CPU when
  7079. CPU i486xx  M7    TI486SXC/e  (WB mode)  (WT mode) (WB mode) TI486SXL  WT      WB
  7080. Bits
  7081. 0   CTL       CTL      CTL         CTL    CTL        CTL         CTL    CTL     CTL
  7082. 1   CTL       CTL      CTL         CTL    CTL        CTL         CTL    CTL     CTL
  7083. 2   ENT       ENT      ENT         ENT    ENT        ENT         ENT    ENT     ENT
  7084. 3   ENT       ENT      ---         ENT    ENT        ENT         ENT    ENT     ENT
  7085. 4   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7086. 5   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7087. 6   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7088. 7   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7089. 8   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7090. 9   SET       SET      SET         SET    SET        SET         SET    SET     SET
  7091. 10  SET       SET      SET         SET    SET        SET         SET    SET     SET
  7092. 11  ---       ---      SET         ---    SET        SET         SET    SET     SET
  7093. 12  ---       ---      ---         ---    ---        ---         WAY   (SET)(SET)
  7094. 13  ---       ---      ---         SLF    ---        SLF         ---    ---     ---
  7095. 14  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7096. 15  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7097. 16  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7098. 17  ---       ---      ---         ---    ---        ---         ---    ---     ST
  7099. 18  ---       ---      ---         ---    ---        ---         ---    ---     ST
  7100. 19  ---       ---      ---         ---    ---        ---         ---    ---     EXT
  7101. 20  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7102. 21  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7103. 22  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7104. 23  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7105. 24  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7106. 25  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7107. 26  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7108. 27  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7109. 28  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7110. 29  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7111. 30  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7112. 31  ---       ---      ---         ---    ---        ---         ---    ---     ---
  7113.  
  7114.  
  7115. -----------------------------------------
  7116. APPENDIX L    VME  -  Virtual Mode Extention
  7117.  
  7118. Support by: Intel SL Enhanced 486 CPUs, Pentium.
  7119. Address Generation: like in VM.
  7120. Differences with VM:
  7121. 1) CLI/STI never interrupt to PM, but change status
  7122. of VIF, if enable.
  7123. 2) INT xxh instruction, which mark in virtual interrupt table,
  7124. which contained in TSS as virtual, never change CPU to PM,
  7125. but processing in VM like INTs in RM.
  7126.  
  7127. Note: See also EFLAG and CR4 registers format.
  7128. Note: Check CPUID for support VME.
  7129.  
  7130. More Info:
  7131. More Info about it is Intel Secret.
  7132. Contact Your Local Intel Office.
  7133.  
  7134.  
  7135. ----------------------------------------------------
  7136. APPENDIX   N  EFLAGS register format
  7137.  
  7138.     [Pentium P5] [Pentium P54C] [IntelDX4]
  7139.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  7140.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7141.     -----------------------------------------------------
  7142.            I V V A V R     N IO O D I T S Z   A    P   C
  7143.     0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  7144.              P F
  7145.     -----------------------------------------------------
  7146.  
  7147.  
  7148.  
  7149.  
  7150.     [i486 SL Enhanced SX,DX,DX2] [IntelSX2]
  7151.     [UMC]
  7152.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  7153.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7154.     -----------------------------------------------------
  7155.            I     A V R     N IO O D I T S Z   A    P   C
  7156.     0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  7157.     -----------------------------------------------------
  7158.  
  7159.  
  7160.  
  7161.  
  7162.     [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  7163.     [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2]
  7164.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  7165.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7166.     -----------------------------------------------------
  7167.              A V R     N IO O D I T S Z   A    P   C
  7168.     0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  7169.     -----------------------------------------------------
  7170.  
  7171.  
  7172.  
  7173.     [i386 SX,DX,CX,EX]  [AMD Am386 ] [C&T 38600 ] etc
  7174.     [IBM 486SLC2]
  7175.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  7176.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7177.     -----------------------------------------------------
  7178.                V R     N IO O D I T S Z   A    P   C
  7179.     0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  7180.     -----------------------------------------------------
  7181.  
  7182.  
  7183.  
  7184.  
  7185.     [i376]
  7186.     3322222222 2 2 1 1 1 1 1 1 11 1 1
  7187.     1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7188.     -----------------------------------------------------
  7189.                  R     N IO O D I T S Z   A    P   C
  7190.     0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  7191.     -----------------------------------------------------
  7192.  
  7193.  
  7194.  
  7195.  
  7196.     [i286 and all clones]
  7197.     1 1 11 1 1
  7198.     5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  7199.     ------------------------------
  7200.       N IO O D I T S Z   A     P   C
  7201.     0 T PL F F F F F F 0 F 0 F 1 F
  7202.     ------------------------------
  7203.  
  7204.  
  7205.  
  7206.     [NEC/Sony V20/V30]
  7207.     1 1 1 1 1 1
  7208.     5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  7209.     -------------------------------
  7210.     M    O D I T S Z   A      P   C
  7211.     D 1 1 1 F F F F F F 0 F 0 F 1 F
  7212.     -------------------------------
  7213.  
  7214.  
  7215.  
  7216.     [80x186 ,EA,EB,EC,XL]  [8086/88 and all clones]
  7217.     1 1 1 1 1 1
  7218.     5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  7219.     -------------------------------
  7220.         O D I T S Z   A      P   C
  7221.     1 1 1 1 F F F F F F 0 F 0 F 1 F
  7222.     -------------------------------
  7223.  
  7224.  
  7225. Flags Summary:
  7226. ID   - Identification Flag
  7227. VIP  - Virtual Interrupt Pending
  7228. VIF  - Virtual Interrupt Flag
  7229. AC   - Align Check
  7230. VM   - Virtual 8086 Mode
  7231. RF   - Resume Flag
  7232. MD   - Mode Flag
  7233. NT   - Nested Task flag
  7234. IOPL - Input/Output Privelege Level
  7235. OF   - Overflow Flag
  7236. DF   - Direction Flag
  7237. IF   - Interrupt Flag
  7238. TF   - Trap Flag
  7239. SF   - Sign Flag
  7240. ZF   - Zero Flag
  7241. AF   - Auxiliary Carry Flag
  7242. PF   - Parity Flag
  7243. CF   - Carry Flag
  7244.  
  7245.  
  7246. ---------------------------------------------------
  7247. APPENDIX  O    CR0 register format
  7248.  
  7249.  
  7250.     [Pentium P5] [Pentium P54C]
  7251.     3 3 2 2222222221 1 1 1 111111
  7252.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  7253.     ---------------------------------------------
  7254.     P C N         A   W          N   T E M P
  7255.     G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  7256.     ---------------------------------------------
  7257.  
  7258.  
  7259.  
  7260.     [IntelDX4] [486DX/DX2, IntelDX4 ]
  7261.     3 3 2 2222222221 1 1 1 111111
  7262.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  7263.     ---------------------------------------------
  7264.     P C N         A   W              T      M P
  7265.     G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  7266.     ---------------------------------------------
  7267.  
  7268.  
  7269.  
  7270.     [Cx486SLC]
  7271.     3 3 2 2222222221 1 1 1 111111
  7272.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  7273.     ---------------------------------------------
  7274.     P C         A   W              T E M P
  7275.     G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  7276.     ---------------------------------------------
  7277.  
  7278.  
  7279.     [Cx486DLC]
  7280.     3 3 2 2222222221 1 1 1 111111
  7281.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  7282.     ---------------------------------------------
  7283.     P C N         A   W            E T E M P
  7284.     G D W 0000000000 M 0 P 0000000000 0 T S M P E
  7285.     ---------------------------------------------
  7286.  
  7287.  
  7288.     [Intel i486SX,SX2]
  7289.     3 3 2 2222222221 1 1 1 111111
  7290.     1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  7291.     ---------------------------------------------
  7292.     P C N         A   W              T E M P
  7293.     G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  7294.     ---------------------------------------------
  7295.  
  7296.  
  7297.     [IBM 486SLC2]
  7298.     3 32222222222111 1 111111
  7299.     1 09876543210987 6 54321098765 4 3 2 1 0
  7300.     ---------------------------------------------
  7301.     P         W         T E M P
  7302.     G 00000000000000 P 0000000000  1 S M P E
  7303.     ---------------------------------------------
  7304.  
  7305.  
  7306.     [Intel i386SX]
  7307.     3 322222222221111111111
  7308.     1 09876543210987654321098765 4 3 2 1 0
  7309.     ---------------------------------------------
  7310.     P                   T E M P
  7311.     G 0000000000000000000000000  1 S M P E
  7312.     ---------------------------------------------
  7313.  
  7314.  
  7315.  
  7316.     [Intel i386DX]
  7317.     3 322222222221111111111
  7318.     1 09876543210987654321098765 4 3 2 1 0
  7319.     ---------------------------------------------
  7320.     P                 E T E M P
  7321.     G 0000000000000000000000000  T S M P E
  7322.     ---------------------------------------------
  7323.  
  7324.  
  7325.     [80286]
  7326.     Note: None CR0, but MSW
  7327.     111111
  7328.     543210987654 3 2 1 0
  7329.     ---------------------
  7330.              T E M P
  7331.     000000000000 S M P E
  7332.     ---------------------
  7333.  
  7334.  
  7335.  
  7336. PE - Protection Enable
  7337. MP - Monitor Processor
  7338. EM - Emulation
  7339. TS - Task Switch
  7340. ET - Extention Type
  7341. NE - Numeric Exception
  7342. WP - Write protect
  7343. AM - Align Mode
  7344. NW - No Write
  7345. CD - Cache Disable
  7346. PG - Paging
  7347.  
  7348.  
  7349. ---------------------------------------------------
  7350. APPENDIX  P   CR4 register format
  7351.  
  7352.     [Pentium P5] [Pentium P54C]
  7353.     3322222222221111111111
  7354.     1098765432109876543210987 6 5 4 3 2 1 0
  7355.     ---------------------------------------
  7356.                   M   P D T P V
  7357.     0000000000000000000000000 C 0 S E S V M
  7358.                   E   E      D I E
  7359.     ----------------------------------------
  7360.  
  7361.  
  7362.  
  7363.     [IntelDX4] [486s SL Enhanced]
  7364.     3322222222221111111111
  7365.     109876543210987654321098765432 1 0
  7366.     ----------------------------------
  7367.                        P V
  7368.     000000000000000000000000000000 V M
  7369.                        I E
  7370.     ----------------------------------
  7371.  
  7372.  
  7373.  
  7374. MCE - Machine Check Enable
  7375. PSE - Page Size Extention
  7376. DE  - Debbuging Expection
  7377. TSD - Time Stamp Disable
  7378. PVI - Protected mode Virtual Interrupt
  7379. VME - Virtual Mode Exception
  7380.  
  7381.  
  7382. ---------------------------------------------
  7383. APPENDIX LAST
  7384. List of the Literature
  7385.  
  7386.  
  7387. 1) "Pentium (tm) Famaly User's Manual
  7388.     Volume 3: Architecture and Programming Manual"
  7389.    // Intel Corp. 1994
  7390.    ;; Order number: 241430
  7391.  
  7392. 2) "Blue Lightning 486DX2 3 and 5 Volt Microprocessors
  7393.     Databook"
  7394.    // IBM Corp./Cyrix Corp. 1994
  7395.    ;; Order Number: MPIDX2DSU-01
  7396.  
  7397. 3) "486SLC2 (tm) Microprocessor"
  7398.    Data Sheet.
  7399.    // IBM Corp. 1993
  7400.    ;; Order number VT05452
  7401.  
  7402. 4) "Cyrix Cx486SLC (tm) Microprocessor"
  7403.    // Cyrix Corp. 1991
  7404.    ;; Order Number 94073
  7405.  
  7406. 5)  "3-Volt System Logic for Personal Computers"
  7407.     // Advanced Micro Devices Inc. 1993
  7408.     ;; Order number: 17028B
  7409.  
  7410. 6)  "IntelDX4 (tm) Processor Data Book"
  7411.     // Intel Corp. 1994
  7412.     ;; Order number: 241944
  7413.  
  7414. 7)  "Intel Processor Identification with the
  7415.      CPUID instruction"
  7416.     // Intel Corp. 1993,1994
  7417.     ;; Order number: 241618
  7418.  
  7419. 8)  "82489DX Advanced Programmable Interrupt
  7420.      Controller"
  7421.     Application Note: AP-485
  7422.     // Intel Corp. 1993
  7423.     ;; Order number: 290446
  7424.  
  7425. 9)  "Optimization for Intel's 32-bit Processors"
  7426.     Application Note: AP-500
  7427.     // Intel Corp. 1993
  7428.     ;; Order number 241799
  7429.  
  7430. A)  "MultiProcessor Specification Version 1.1"
  7431.     // Intel Corp. 1993
  7432.     ;; Order Number: 242016
  7433.  
  7434. etc.....
  7435. ---------------------------------------------------------
  7436. [Credits]:
  7437. 1) THANX specially for/to Martin Malik and RealSoft.
  7438.    (malik@elf.stuba.sk)
  7439.    Cyrix's CPUs type data.
  7440.    Some Vendors strings for CPUID.
  7441.    P54M ID code
  7442.    Part of Tis Kind of Info (C) RealSoft.
  7443. 2) THANX to all people from Intel, AMD, TI, Cyrix, UMC,
  7444.    who helped with information and CPU samples.
  7445. 3) ABSOLUTELY NO THANX for all, who hide information and
  7446.    CPU samplers.
  7447. ----------------------------------------------------------
  7448. [2 Friends]:
  7449. Hi,Aad Offerman and Chiplist 10.x! ( I hope 12.xx now)
  7450.  (Did You already include National Semicondactors 486)?
  7451. Spock  (South America), Live Long and Prosper!
  7452. -----------------------------------------------------------
  7453. [2 All]
  7454. If Your found some errors or incorrections in this text
  7455. please    send info 'bout it.
  7456. -----------------------------------------------------------
  7457. Thanx for  Alex A. Afonasov (AFO)  - author of
  7458.        "I'm too Young to die in this deathmuch" story,
  7459.        and "~PHG`DAYS"  story.
  7460.        Yury V.Temkin (Horazon Technologies),
  7461.        Urri, Bug (i.e. Spider), Stas, Kernel.3
  7462.        and all other numbers of
  7463.        Potemkin's Hackers Group.
  7464.        - - - - - - - - - - - - - -
  7465. Special Thanks for  Alex (DVM), Alexei(s) (RASTR/AWARD)
  7466. ------------------------------------------------------------
  7467. Sorry, But EOF
  7468.  
  7469.